您好,欢迎来到养宠指南。
搜索
您的当前位置:首页

javascript下用for(in)语句获得所有style内容的脚本代码_javascript技巧

2022-06-15 来源:养宠指南
摘要
之前经常遇见classname、csstext之类的词,却不知道如何用。最近着手网站实际建设,收获颇多,给还不懂的人分享一下。 通常在网页中样式表的调用方法有四种。第一是外链,即的形式;第二是输入样式表;第三是在网页头部申明,如 ...;最后是直接在对象后写样式,即的形式。我们用脚本调用样式,也要从这几方面入手。 一、通常情况下,我们可以通过改变外链样式的的href的值实现网页样式的实时切换,也就是“改变模板风格”。这时候我们首先需要赋予需要改变的目标一个id,如 调用时很简单,如点我改变样式

events=[];for(o in O=obj.currentStyle)events.push(o+'='+O[o]) 这里输入代码内容 [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]

小编还为您整理了以下内容,可能对您也有帮助:

用脚本调用样式的几种方法_javascript技巧

之前经常遇见classname、csstext之类的词,却不知道如何用。最近着手网站实际建设,收获颇多,给还不懂的人分享一下。

通常在网页中样式表的调用方法有四种。第一是外链,即的形式;第二是输入样式表;第三是在网页头部申明,如 ...;最后是直接在对象后写样式,即的形式。我们用脚本调用样式,也要从这几方面入手。

一、通常情况下,我们可以通过改变外链样式的的href的值实现网页样式的实时切换,也就是“改变模板风格”。这时候我们首先需要赋予需要改变的目标一个id,如

调用时很简单,如点我改变样式

二、局部改变样式,分为改变直接样式,改变className和改变cssText三种。需要注意的是:第一,javascript对大小写十分敏感,className不能够把“N”写成“n”,cssText也不能够把“T”写成“t”,否则无法实现效果。第二,如果改变className,则事先在样式表中申明类,但调用时不要再跟style,像

document.getElementById('obj').style.className="..."的写法是错误的!

只能写成:document.getElementById('obj').className="..."

但是如果用cssText的话,必须加上style,正确的写法是:

document.getElementById('obj').style.cssText="..."

改变直接样式我就不必说了,大家记得要写到具体样式即可,如

document.getElementById('obj').style.backgroundColor="#003366"

对于新人往往不知道CSS具体样式在javascript怎么写,而且有时候在不同浏览器中要求也不一样。如float在IE中写成styleFloat,在FIREFOX中写成cssFloat,这就需要大家的积累了。在google中搜索“JSS”,也许会对你的疑惑有所帮助。

javascript中for in怎么用?

for in在javascript中的具体情况是:

1、解析

for...in 语句对应于一个对象的每个,或一个数组的每个元素,执行一个或多个语句。 for (variable in [object | array])

2、参数

variable,必选项。一个变量,它可以是 object 的任一属性或 array 的任一元素。object, array,可选项。要在其上遍历的对象或数组。

3、说明

在循环的每次迭代前,variable 被赋予 object 的下一个属性或 array 的下一个元素。然后可以在循环内的任一语句中使用它,就好像正在使用 object 的该属性或 array 的该元素一样。

当在一个对象上迭代时,没有办法决定或控制把对象的成员赋给 variable 的次序。在数组内将按元素的次序执行迭代,也就是,0、1、2、......

javascript中for...in的用法

本篇文章给大家带来的内容是关于JavaScript中使用for...in 和Object.keys()枚举对象属性的差异(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

用for...in循环和Object.keys方法都可以获取对象的属性,那么它们有什么区别呢?假设有一个对象a:

var a = {x: 1, y: 2};Object.defineProperty(a, 'z', {value: 3}); // 定义不可枚举属性zvar keys = [];for (var key in a) { keys.push(key);}console.log(keys);console.log(Object.keys(a));

程序的输出结果为:

2212328345-5c8cfdb8c7192_articlex.png

两种方式都获取到了对象的所有可枚举属性,而对于不可枚举属性两种方式都无法得到。
下面顶一个对象b, 并且b作为对象a的原型对象:

var b = {bx: 1, by: 2};Object.defineProperty(b, 'bz', {value: 3});Object.setPrototypeOf(a, b);

在此用上面的方式输出a的key值,得到结果如下:

422978928-5c8cff8cd1c47_articlex.png

从输出的结果中不难看出,for...in循环可以遍历对象的所有可枚举属性,包括原型对象中的属性,而通过Object.keys只能获取到对象可枚举的自有属性,所以如果想通过for...in获取对象的自有属性,可通过hasOwnProperty方法对结果进行过滤:

var keys = [];for (var key in a) { if (a.hasOwnProperty(key)) { keys.push(key); }}

也可以通过Object.getOwnPropertyNames获取对象的自有属性。

1186803213-5c8d02a6321de_articlex.png

从上面的输出结果中可知getOwnPropertyNames方法输出的结果中还包含了对象的不可枚举属性,可以通过Object.propertyIsEnumerable来判断属性是否可枚举从而对结果进行过滤:

1145348822-5c8d039b9dc36_articlex.png

javascript中for...in的用法

本篇文章给大家带来的内容是关于JavaScript中使用for...in 和Object.keys()枚举对象属性的差异(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

用for...in循环和Object.keys方法都可以获取对象的属性,那么它们有什么区别呢?假设有一个对象a:

var a = {x: 1, y: 2};Object.defineProperty(a, 'z', {value: 3}); // 定义不可枚举属性zvar keys = [];for (var key in a) { keys.push(key);}console.log(keys);console.log(Object.keys(a));

程序的输出结果为:

2212328345-5c8cfdb8c7192_articlex.png

两种方式都获取到了对象的所有可枚举属性,而对于不可枚举属性两种方式都无法得到。
下面顶一个对象b, 并且b作为对象a的原型对象:

var b = {bx: 1, by: 2};Object.defineProperty(b, 'bz', {value: 3});Object.setPrototypeOf(a, b);

在此用上面的方式输出a的key值,得到结果如下:

422978928-5c8cff8cd1c47_articlex.png

从输出的结果中不难看出,for...in循环可以遍历对象的所有可枚举属性,包括原型对象中的属性,而通过Object.keys只能获取到对象可枚举的自有属性,所以如果想通过for...in获取对象的自有属性,可通过hasOwnProperty方法对结果进行过滤:

var keys = [];for (var key in a) { if (a.hasOwnProperty(key)) { keys.push(key); }}

也可以通过Object.getOwnPropertyNames获取对象的自有属性。

1186803213-5c8d02a6321de_articlex.png

从上面的输出结果中可知getOwnPropertyNames方法输出的结果中还包含了对象的不可枚举属性,可以通过Object.propertyIsEnumerable来判断属性是否可枚举从而对结果进行过滤:

1145348822-5c8d039b9dc36_articlex.png

JavaScript,for...in 循环怎么用啊??

//遍历people中的每个元素,保存在x中

for (x in person){}

javascript基础入门

JavaScript是一种脚本语言,用于在网页上增加交互性和动态效果。随着互联网的发展,JavaScript的应用越来越广泛,成为前端开发的重要技能之一。本文将介绍JavaScript的基础语法和常用操作,帮助初学者入门。
1. 变量和数据类型
在JavaScript中,可以使用var、let或const关键字声明变量。变量可以存储不同类型的数据,如字符串、数字、布尔值、数组和对象。不同的数据类型有不同的操作方式和*。
2. 运算符和表达式
JavaScript支持基本的算术运算符(+、-、*、/),比较运算符(>、
3. 条件语句
使用if、else if和else语句可以根据不同的条件执行不同的代码块。可以使用比较运算符和逻辑运算符控制条件。
4. 循环语句
使用for、while和do-while语句可以重复执行一段代码块,直到满足某个条件为止。可以使用break和continue语句控制循环的执行。
5. 函数
函数是一段可以重复使用的代码块,可以接收参数并返回值。使用function关键字定义函数,可以在代码中多次调用。
6. 数组和对象
数组是一组有序的值,可以使用下标访问和修改其中的元素。对象是一组无序的键值对,可以使用键名访问和修改其中的值。数组和对象可以嵌套使用,形成复杂的数据结构。
7. DOM操作
DOM是文档对象模型,它表示网页中的各个元素和属性。可以通过JavaScript代码操作DOM,实现网页的动态效果和交互性。例如,可以使用document对象获取元素、修改样式、添加事件等。
以上是JavaScript的基础内容,希望本文能够帮助读者快速入门。随着对JavaScript的深入学习,可以了解更多高级语法和技巧,提高前端开发的能力。

javascript基础入门

JavaScript是一种脚本语言,用于在网页上增加交互性和动态效果。随着互联网的发展,JavaScript的应用越来越广泛,成为前端开发的重要技能之一。本文将介绍JavaScript的基础语法和常用操作,帮助初学者入门。
1. 变量和数据类型
在JavaScript中,可以使用var、let或const关键字声明变量。变量可以存储不同类型的数据,如字符串、数字、布尔值、数组和对象。不同的数据类型有不同的操作方式和*。
2. 运算符和表达式
JavaScript支持基本的算术运算符(+、-、*、/),比较运算符(>、
3. 条件语句
使用if、else if和else语句可以根据不同的条件执行不同的代码块。可以使用比较运算符和逻辑运算符控制条件。
4. 循环语句
使用for、while和do-while语句可以重复执行一段代码块,直到满足某个条件为止。可以使用break和continue语句控制循环的执行。
5. 函数
函数是一段可以重复使用的代码块,可以接收参数并返回值。使用function关键字定义函数,可以在代码中多次调用。
6. 数组和对象
数组是一组有序的值,可以使用下标访问和修改其中的元素。对象是一组无序的键值对,可以使用键名访问和修改其中的值。数组和对象可以嵌套使用,形成复杂的数据结构。
7. DOM操作
DOM是文档对象模型,它表示网页中的各个元素和属性。可以通过JavaScript代码操作DOM,实现网页的动态效果和交互性。例如,可以使用document对象获取元素、修改样式、添加事件等。
以上是JavaScript的基础内容,希望本文能够帮助读者快速入门。随着对JavaScript的深入学习,可以了解更多高级语法和技巧,提高前端开发的能力。

JavaScript教程--从入门到精通(3)

JavaScript程序构成

JavaScript脚本语言的基本构成是由控制语句 函数 对象 方法 属性等 来实现编程的

一 程序控制流  在任何一种语言中 程序控制流是必须的 它能使得整个程序减小混乱 使之顺利按其一定的方式执行 下面是JavaScript常用的程序控制流结构及语句:1 if条件语句 基本格式if(表述式)语句段1 else语句段2  功能 若表达式为true 则执行语句段1 否则执行语句段2  说明 if else 语句是JavaScript中最基本的控制语句 通过它可以改变语句的执行顺序 表达式中必须使用关系语句 来实现判断 它是作为一个布尔值来估算的 它将零和非零的数分别转化成false和true 若if后的语句有多行 则必须使用花括号将其括起来  if语句的嵌套if(布尔值)语句1 else(布尔值)语句2 else if(布尔值)语句3 ……else 语句4  在这种情况下 每一级的布尔表述式都会被计算 若为真 则执行其相应的语句 否则执行else后的语句  2 For循环语句 基本格式for(初始化 条件 增量)语句集  功能 实现条件循环 当条件成立时 执行语句集 否则跳出循环体  说明 初始化参数告诉循环的开始位置 必须赋予变量的初值 条件 是用于判别循环停止时的条件 若条件满足 则执行循环体 否则 跳出 增量 主要定义循环控制变量在每次循环时按什么方式变化 三个主要语句之间 必须使用逗号分隔  3 while循环 基本格式while(条件)语句集 该语句与For语句一样 当条件为真时 重复循环 否则退出循环  For与while语句  两种语句都是循环语句 使用For语句在处理有关数字时更易看懂 也较紧凑 而while循环对复杂的语句效果更特别

4 break和continue语句  与C++语言相同 使用break语句使得循环从For或while中跳出 continue使得跳过循环内剩余的语句而进入下一次循环

二 函数  函数为程序设计人员提供了一个丰常方便的能力 通常在进行一个复杂的程序设计时 总是根据所要完成的功能 将程序划分为一些相对独立的部分 每部分编写一个函数 从而 使各部分充分独立 任务单一 程序清晰 易懂 易读 易维护 JavaScript函数可以封装那些在程序中可能要多次用到的模块 并可作为事件驱动的结果而调用的程序 从而实现一个函数把它与事件驱动相关联 这是与其它语言不样的地方

1 JavaScript函数定义Function 函数名 (参数 变元){函数体; Return 表达式;}说明  当调用函数时 所用变量或字面量均可作为变元传递  函数由关键字Function定义  函数名 定义自己函数的名字  参数表 是传递给函数使用或操作的值 其值可以是常量 变量或其它表达式  通过指定函数名(实参)来调用一个函数  必须使用Return将值返回  函数名对大小写是敏感的  2 函数中的形式参数   在函数的定义中 我们看到函数名后有参数表 这些参数变量可能是一个或几个 那么怎样才能确定参数变量的个数呢?在JavaScript中可通过arguments Length来检查参数的个数 例 Function function_Name(exp exp exp exp )Number =function _Name arguments length;if (Number> )document wrile(exp );if (Number> )document write(exp );if(Number> )document write(exp );

三 事件驱动及事件处理1 基本概念  JavaScript是基于对象(object based)的语言 这与Java不同 Java是面向对象的语言 而基于对象的基本特征 就是采用事件驱动(event driven) 它是在用形界面的环境下 使得一切输入变化简单化 通常鼠标或热键的动作我们称之为事件(Event) 而由鼠标或热键引发的一连串程序的动作 称之为事件驱动(Event Driver) 而对事件进行处理程序或函数 我们称之为事件处理程序(Event Handler)

2 事件处理程序  在JavaScript中对象事件的处理通常由函数(Function)担任 其基本格式与函数全部一样 可以将前面所介绍的所有函数作为事件处理程序 格式如下 Function 事件处理名(参数表){事件处理语句集 ……}

3 事件驱动  JavaScript事件驱动中的事件是通过鼠标或热键的动作引发的 它主要有以下几个事件 (1)单击事件onClick  当用户单击鼠标按钮时 产生onClick事件 同时onClick指定的事件处理程序或代码将被调用执行 通常在下列基本对象中产生 button(按钮对象)checkbox(复选框)或(检查列表框)radio (单选钮)reset buttons(重要按钮)submit buttons(提交按钮)

例 可通过下列按钮激活change()文件 <Form><Input type= button Value= onClick= change() ></Form>  在onClick等号后 可以使用自己编写的函数作为事件处理程序 也可以使用JavaScript中内部的函数 还可以直接使用JavaScript的代码等 例 <Input type= button value= onclick=alert( 这是一个例子 );(2)onChange改变事件  当利用text或texturea元素输入字符值改变时发该事件 同时当在select表格项中一个选项状态改变后也会引发该事件 例 <Form><Input type= text name= Test value= Test onCharge= check( this test) ></Form>(3)选中事件onSelect  当Text或Textarea对象中的文字被加亮后 引发该事件 (4)获得焦点事件onFocus  当用户单击Text或textarea以及select对象时 产生该事件 此时该对象成为前台对象 (5)失去焦点onBlur  当text对象或textarea对象以及select对象不再拥有焦点 而退到后台时 引发该文件 他与onFocas事件是一个对应的关系 (6)载入文件onLoad  当文档载入时 产生该事件 onLoad一个作用就是在首次载入一个文档时检测cookie的值 并用一个变量为其赋值 使它可以被源代码使用 (7)卸载文件onUnload  当Web页面退出时引发onUnload事件 并可更新Cookie的状态

四 范例  范例 下例程序是一个自动装载和自动卸载的例子 即当装入HTML文档时调用loadform()函数 而退出该文档进入另一HTML文档时则首先调用unloadform()函数 确认后方可进入 <HTML><HEAD><script Language= JavaScript ><! function loadform(){alert( 这是一个自动装载例子! );}function unloadform(){alert( 这是一个卸载例子! );}// ></Script></HEAD><BODY OnLoad= loadform() OnUnload= unloadform() ><a >调用</a></BODY></HTML> 范例 这是一个获取浏览器版本号的程序 该程序首先显示一个波浪一提示信息 之后显示浏览器的版本号有关信息 <><head><script language= JavaScript ><! // >function makeArray(n){this length=nreturn this}function hexfromdec(num) {hex=new makeArray( );var hexstring= ;var shifthex= ;var temp =num;for(x= ; x>= ; x ) {hex[x]=Math round(temp /shifthex );hex[x ]=temp hex[x] * shifthex;temp =hex[x ];shifthex /= ;}for (x= ; x>= ; x ) { hexstring+=getletter(hex[x]); }return (hexstring);} function getletter(num) {if (num < ) { return num; }else {if (num == ) { return A }if (num == ) { return B }if (num == ) { return C }if (num == ) { return D }if (num == ) { return E }if (num == ) { return F }}}function rainbow(text){var color_d ;var allstring= ;for(i= ;i<text length;i=i+ ){color_d = *Math sin(i/(text length/ ));color_h =hexfromdec(color_d );allstring+= <FONT COLOR= +color_h + ff +color_h + > +text substring(i i+ )+ </FONT> ;}return allstring;} function sizefont(text){var color_d ;var allstring= ;var flag= ;for(i= j= ;i<text length;i=i+ ){if (flag== ) {j++;if (j>= ) {flag= ;}}if (flag== ) {j=j ;if (j<= ) {flag= ; }}allstring+= <FONT SIZE= + j + > + text substring(i i+ ) + </FONT> ;}return allstring;}document write( <font size= ><CENTER> )document write( <BR><BR> )document write( sizefont( 这是一个获取WEB浏览器的程序 ))document write( </CENTER></font> )document write( 浏览器名称: +navigator appName+ <br> );document write( 版本号: +navigator appVersion+ <br> );document write( 代码名字: +navigator appCodeName+ <br> );document write( 用户代理标识: +navigator userAgent);</script><body></body></>输出结果图 所示

lishixin/Article/program/Java/JSP/201311/19230

    JavaScript教程--从入门到精通(3)

    JavaScript程序构成

    JavaScript脚本语言的基本构成是由控制语句 函数 对象 方法 属性等 来实现编程的

    一 程序控制流  在任何一种语言中 程序控制流是必须的 它能使得整个程序减小混乱 使之顺利按其一定的方式执行 下面是JavaScript常用的程序控制流结构及语句:1 if条件语句 基本格式if(表述式)语句段1 else语句段2  功能 若表达式为true 则执行语句段1 否则执行语句段2  说明 if else 语句是JavaScript中最基本的控制语句 通过它可以改变语句的执行顺序 表达式中必须使用关系语句 来实现判断 它是作为一个布尔值来估算的 它将零和非零的数分别转化成false和true 若if后的语句有多行 则必须使用花括号将其括起来  if语句的嵌套if(布尔值)语句1 else(布尔值)语句2 else if(布尔值)语句3 ……else 语句4  在这种情况下 每一级的布尔表述式都会被计算 若为真 则执行其相应的语句 否则执行else后的语句  2 For循环语句 基本格式for(初始化 条件 增量)语句集  功能 实现条件循环 当条件成立时 执行语句集 否则跳出循环体  说明 初始化参数告诉循环的开始位置 必须赋予变量的初值 条件 是用于判别循环停止时的条件 若条件满足 则执行循环体 否则 跳出 增量 主要定义循环控制变量在每次循环时按什么方式变化 三个主要语句之间 必须使用逗号分隔  3 while循环 基本格式while(条件)语句集 该语句与For语句一样 当条件为真时 重复循环 否则退出循环  For与while语句  两种语句都是循环语句 使用For语句在处理有关数字时更易看懂 也较紧凑 而while循环对复杂的语句效果更特别

    4 break和continue语句  与C++语言相同 使用break语句使得循环从For或while中跳出 continue使得跳过循环内剩余的语句而进入下一次循环

    二 函数  函数为程序设计人员提供了一个丰常方便的能力 通常在进行一个复杂的程序设计时 总是根据所要完成的功能 将程序划分为一些相对独立的部分 每部分编写一个函数 从而 使各部分充分独立 任务单一 程序清晰 易懂 易读 易维护 JavaScript函数可以封装那些在程序中可能要多次用到的模块 并可作为事件驱动的结果而调用的程序 从而实现一个函数把它与事件驱动相关联 这是与其它语言不样的地方

    1 JavaScript函数定义Function 函数名 (参数 变元){函数体; Return 表达式;}说明  当调用函数时 所用变量或字面量均可作为变元传递  函数由关键字Function定义  函数名 定义自己函数的名字  参数表 是传递给函数使用或操作的值 其值可以是常量 变量或其它表达式  通过指定函数名(实参)来调用一个函数  必须使用Return将值返回  函数名对大小写是敏感的  2 函数中的形式参数   在函数的定义中 我们看到函数名后有参数表 这些参数变量可能是一个或几个 那么怎样才能确定参数变量的个数呢?在JavaScript中可通过arguments Length来检查参数的个数 例 Function function_Name(exp exp exp exp )Number =function _Name arguments length;if (Number> )document wrile(exp );if (Number> )document write(exp );if(Number> )document write(exp );

    三 事件驱动及事件处理1 基本概念  JavaScript是基于对象(object based)的语言 这与Java不同 Java是面向对象的语言 而基于对象的基本特征 就是采用事件驱动(event driven) 它是在用形界面的环境下 使得一切输入变化简单化 通常鼠标或热键的动作我们称之为事件(Event) 而由鼠标或热键引发的一连串程序的动作 称之为事件驱动(Event Driver) 而对事件进行处理程序或函数 我们称之为事件处理程序(Event Handler)

    2 事件处理程序  在JavaScript中对象事件的处理通常由函数(Function)担任 其基本格式与函数全部一样 可以将前面所介绍的所有函数作为事件处理程序 格式如下 Function 事件处理名(参数表){事件处理语句集 ……}

    3 事件驱动  JavaScript事件驱动中的事件是通过鼠标或热键的动作引发的 它主要有以下几个事件 (1)单击事件onClick  当用户单击鼠标按钮时 产生onClick事件 同时onClick指定的事件处理程序或代码将被调用执行 通常在下列基本对象中产生 button(按钮对象)checkbox(复选框)或(检查列表框)radio (单选钮)reset buttons(重要按钮)submit buttons(提交按钮)

    例 可通过下列按钮激活change()文件 <Form><Input type= button Value= onClick= change() ></Form>  在onClick等号后 可以使用自己编写的函数作为事件处理程序 也可以使用JavaScript中内部的函数 还可以直接使用JavaScript的代码等 例 <Input type= button value= onclick=alert( 这是一个例子 );(2)onChange改变事件  当利用text或texturea元素输入字符值改变时发该事件 同时当在select表格项中一个选项状态改变后也会引发该事件 例 <Form><Input type= text name= Test value= Test onCharge= check( this test) ></Form>(3)选中事件onSelect  当Text或Textarea对象中的文字被加亮后 引发该事件 (4)获得焦点事件onFocus  当用户单击Text或textarea以及select对象时 产生该事件 此时该对象成为前台对象 (5)失去焦点onBlur  当text对象或textarea对象以及select对象不再拥有焦点 而退到后台时 引发该文件 他与onFocas事件是一个对应的关系 (6)载入文件onLoad  当文档载入时 产生该事件 onLoad一个作用就是在首次载入一个文档时检测cookie的值 并用一个变量为其赋值 使它可以被源代码使用 (7)卸载文件onUnload  当Web页面退出时引发onUnload事件 并可更新Cookie的状态

    四 范例  范例 下例程序是一个自动装载和自动卸载的例子 即当装入HTML文档时调用loadform()函数 而退出该文档进入另一HTML文档时则首先调用unloadform()函数 确认后方可进入 <HTML><HEAD><script Language= JavaScript ><! function loadform(){alert( 这是一个自动装载例子! );}function unloadform(){alert( 这是一个卸载例子! );}// ></Script></HEAD><BODY OnLoad= loadform() OnUnload= unloadform() ><a >调用</a></BODY></HTML> 范例 这是一个获取浏览器版本号的程序 该程序首先显示一个波浪一提示信息 之后显示浏览器的版本号有关信息 <><head><script language= JavaScript ><! // >function makeArray(n){this length=nreturn this}function hexfromdec(num) {hex=new makeArray( );var hexstring= ;var shifthex= ;var temp =num;for(x= ; x>= ; x ) {hex[x]=Math round(temp /shifthex );hex[x ]=temp hex[x] * shifthex;temp =hex[x ];shifthex /= ;}for (x= ; x>= ; x ) { hexstring+=getletter(hex[x]); }return (hexstring);} function getletter(num) {if (num < ) { return num; }else {if (num == ) { return A }if (num == ) { return B }if (num == ) { return C }if (num == ) { return D }if (num == ) { return E }if (num == ) { return F }}}function rainbow(text){var color_d ;var allstring= ;for(i= ;i<text length;i=i+ ){color_d = *Math sin(i/(text length/ ));color_h =hexfromdec(color_d );allstring+= <FONT COLOR= +color_h + ff +color_h + > +text substring(i i+ )+ </FONT> ;}return allstring;} function sizefont(text){var color_d ;var allstring= ;var flag= ;for(i= j= ;i<text length;i=i+ ){if (flag== ) {j++;if (j>= ) {flag= ;}}if (flag== ) {j=j ;if (j<= ) {flag= ; }}allstring+= <FONT SIZE= + j + > + text substring(i i+ ) + </FONT> ;}return allstring;}document write( <font size= ><CENTER> )document write( <BR><BR> )document write( sizefont( 这是一个获取WEB浏览器的程序 ))document write( </CENTER></font> )document write( 浏览器名称: +navigator appName+ <br> );document write( 版本号: +navigator appVersion+ <br> );document write( 代码名字: +navigator appCodeName+ <br> );document write( 用户代理标识: +navigator userAgent);</script><body></body></>输出结果图 所示

    lishixin/Article/program/Java/JSP/201311/19230

      优化JavaScript脚本的性能的几个注意事项_基础知识

      随着网络的发展,网速和机器速度的提高,越来越多的网站用到了丰富客户端技术。而现在Ajax则是最为流行的一种方式。JavaScript是一种解释型语言,所以能无法达到和C/Java之类的水平,了它能在客户端所做的事情,为了能改进他的性能,我想基于我以前给JavaScript做过的很多测试来谈谈自己的经验,希望能帮助大家改进自己的JavaScript脚本性能。

      语言层次方面

      循环

      循环是很常用的一个控制结构,大部分东西要依靠它来完成,在JavaScript中,我们可以使用for(;;),while(),for(in)三种循环,事实上,这三种循环中for(in)的效率极差,因为他需要查询散列键,只要可以就应该尽量少用。for(;;)和while循环的性能应该说基本(平时使用时)等价。

      而事实上,如何使用这两个循环,则有很大讲究。我在测试中有些很有意思的情况,见附录。最后得出的结论是:

      如果是循环变量递增或递减,不要单独对循环变量赋值,应该在它最后一次读取的时候使用嵌套的++或—操作符。

      如果要与数组的长度作比较,应该事先把数组的length属性放入一个局部变量中,减少查询次数。

      局部变量和全局变量

      局部变量的速度要比全局变量的访问速度更快,因为全局变量其实是全局对象的成员,而局部变量是放在函数的栈当中的。

      不使用Eval

      使用eval相当于在运行时再次调用解释引擎对内容进行运行,需要消耗大量时间。这时候使用JavaScript所支持的闭包可以实现函数模版(关于闭包的内容请参考函数式编程的有关内容)

      减少对象查找

      因为JavaScript的解释性,所以a.b.c.d.e,需要进行至少4次查询操作,先检查a再检查a中的b,再检查b中的c,如此往下。所以如果这样的表达式重复出现,只要可能,应该尽量少出现这样的表达式,可以利用局部变量,把它放入一个临时的地方进行查询。

      这一点可以和循环结合起来,因为我们常常要根据字符串、数组的长度进行循环,而通常这个长度是不变的,比如每次查询a.length,就要额外进行一个操作,而预先把var len=a.length,则就少了一次查询。

      字符串连接

      如果是追加字符串,最好使用s+=anotherStr操作,而不是要使用s=s+anotherStr。

      如果要连接多个字符串,应该少使用+=,如

      s+=a;s+=b;s+=c;

      应该写成

      s+=a + b + c;

      而如果是收集字符串,比如多次对同一个字符串进行+=操作的话,最好使用一个缓存。怎么用呢?使用JavaScript数组来收集,最后使用join方法连接起来,如下

      var buf = new Array();for(var i = 0; i < 100; i++){ buf.push(i.toString());}var all = buf.join("");

      类型转换

      类型转换是大家常犯的错误,因为JavaScript是动态类型语言,你不能指定变量的类型。

      1. 把数字转换成字符串,应用"" + 1,虽然看起来比较丑一点,但事实上这个效率是最高的,性能上来说:

      ("" +) > String() > .toString() > new String()

      这条其实和下面的“直接量”有点类似,尽量使用编译时就能使用的内部操作要比运行时使用的用户操作要快。

      String()属于内部函数,所以速度很快,而.toString()要查询原型中的函数,所以速度逊色一些,new String()用于返回一个精确的副本。

      2. 浮点数转换成整型,这个更容易出错,很多人喜欢使用parseInt(),其实parseInt()是用于将字符串转换成数字,而不是浮点数和整型之间的转换,我们应该使用Math.floor()或者Math.round()。

      另外,和第二节的对象查找中的问题不一样,Math是内部对象,所以Math.floor()其实并没有多少查询方法和调用的时间,速度是最快的。

      3. 对于自定义的对象,如果定义了toString()方法来进行类型转换的话,推荐显式调用toString(),因为内部的操作在尝试所有可能性之后,会尝试对象的toString()方法尝试能否转化为String,所以直接调用这个方法效率会更高

      使用直接量

      其实这个影响倒比较小,可以忽略。什么叫使用直接量,比如,JavaScript支持使用[param,param,param,...]来直接表达一个数组,以往我们都使用new Array(param,param,...),使用前者是引擎直接解释的,后者要调用一个Array内部构造器,所以要略微快一点点。

      同样,var foo = {}的方式也比var foo = new Object();快,var reg = /../;要比var reg=new RegExp()快。

      字符串遍历操作

      对字符串进行循环操作,譬如替换、查找,应使用正则表达式,因为本身JavaScript的循环速度就比较慢,而正则表达式的操作是用C写成的语言的API,性能很好。

      高级对象

      自定义高级对象和Date、RegExp对象在构造时都会消耗大量时间。如果可以复用,应采用缓存的方式。

      DOM相关

      插入HTML

      很多人喜欢在JavaScript中使用document.write来给页面生成内容。事实上这样的效率较低,如果需要直接插入HTML,可以找一个容器元素,比如指定一个div或者span,并设置他们的innerHTML来将自己的HTML代码插入到页面中。

      对象查询

      使用[“”]查询要比.items()更快,这和前面的减少对象查找的思路是一样的,调用.items()增加了一次查询和函数的调用。

      创建DOM节点

      通常我们可能会使用字符串直接写HTML来创建节点,其实这样做

      无法保证代码的有效性

      字符串操作效率低

      所以应该是用document.createElement()方法,而如果文档中存在现成的样板节点,应该是用cloneNode()方法,因为使用createElement()方法之后,你需要设置多次元素的属性,使用cloneNode()则可以减少属性的设置次数——同样如果需要创建很多元素,应该先准备一个样板节点。

      定时器

      如果针对的是不断运行的代码,不应该使用setTimeout,而应该是用setInterval。setTimeout每次要重新设置一个定时器。

      其他

      脚本引擎

      据我测试Microsoft的JScript的效率较Mozilla的Spidermonkey要差很多,无论是执行速度还是内存管理上,因为JScript现在基本也不更新了。但SpiderMonkey不能使用ActiveXObject

      文件优化

      文件优化也是一个很有效的手段,删除所有的空格和注释,把代码放入一行内,可以加快下载的速度,注意,是下载的速度而不是解析的速度,如果是本地,注释和空格并不会影响解释和执行速度。

      总结

      本文总结了我在JavaScript编程中所找到的提高JavaScript运行性能的一些方法,其实这些经验都基于几条原则:

      直接拿手头现成的东西比较快,如局部变量比全局变量快,直接量比运行时构造对象快等等。

      尽可能少地减少执行次数,比如先缓存需要多次查询的。

      尽可能使用语言内置的功能,比如串链接。

      尽可能使用系统提供的API,因为这些API是编译好的二进制代码,执行效率很高

      同时,一些基本的算法上的优化,同样可以用在JavaScript中,比如运算结构的调整,这里就不再赘述了。但是由于JavaScript是解释型的,一般不会在运行时对字节码进行优化,所以这些优化仍然是很重要的。

      当然,其实这里的一些技巧同样使用在其他的一些解释型语言中,大家也可以进行参考。

      参考

      http://www.umsu.de/jsperf/ 各种浏览器的测试对比

      http://home.earthlink.net/~kendrasg/info/js_opt/

      附录1

      由于是以前做过的测试,测试代码已经不全,我补充了一部分如下:

      var print;

      if(typeof document != "undefined" ){

      print = function(){

      document.write(arguments[0]);

      }

      }else if(typeof WScript != "undefined" ){

      print = function(){

      WScript.Echo(arguments[0],arguments[1],arguments[2]);

      }

      }

      function empty(){

      }

      function benchmark(f){

      var i = 0;

      var start = (new Date()).getTime();

      while(i < pressure){

      f(i++);

      }

      var end = (new Date()).getTime();

      WScript.Echo(end-start);

      }

      /*

      i=0

      start = (new Date()).getTime();

      while(i < 60000){

      c = [i,i,i,i,i,i,i,i,i,i];

      i++;

      }

      end = (new Date()).getTime();

      WScript.Echo(end-start);

      i=0

      start = (new Date()).getTime();

      while(i < 60000){

      c = new Array(i,i,i,i,i,i,i,i,i,i);

      i++;

      }

      var end = (new Date()).getTime();

      WScript.Echo(end-start);

      javascript中的for in 是怎么用的?求解,看了下资料感觉还是不太明白

      for (变量 in 对象)

      {

      在此执行代码

      }

      例如, for i in n ,就是遍历所有的 n ,并把里面的资料传到 i 进行操作。

      不懂可以私信问我详细

      养宠指南还为您提供以下相关内容希望对您有帮助:

      如何遍历一个JS对象中的所有属性

      使用for...in可以遍历js对象的属性,用法如下:for...in 语句用于遍历数组或者对象的属性(对数组或者对象的属性进行循环操作)。for ... in 循环中的代码每执行一次,就会对数组的元素或者对象的属性进行一次操作。具体代码...

      javascript中for...in的用法

      其用法如下:创建一个变量,指向要遍历的数组或集合,然后对定义的变量进行操作。不用对列表中的每个项目进行赋值,因为 for/in 替您处理了这件事。

      优化JavaScript脚本的性能的几个注意事项_基础知识

      循环是很常用的一个控制结构,大部分东西要依靠它来完成,在JavaScript中,我们可以使用for(;;),while(),for(in)三种循环,事实上,这三种循环中for(in)的效率极差,因为他需要查询散列键,只要可以就应该尽量少用。for(;;)和while循环的...

      求个简单javascript代码 谢谢,网站菜单功能

      &lt;script type="text/javascript"&gt;document.getElementById("saleList"+saleNum).style.display="";&lt;/script&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt;更多网页特效代码尽在 &lt;a href="http://www.jshtml.cn/"&gt;网页特效代码&lt;/a&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt; 这...

      用脚本调用样式的几种方法_javascript技巧

      第一是外链,即的形式;第二是输入样式表;第三是在网页头部申明,如 ...;最后是直接在对象后写样式,即的形式。我们用脚本调用样式,也要从这几方面入手。 一、通常情况下,我们可以通过改变外链样式的的href的值实现...

      &lt;大虾进&gt; javascript常用脚本代码有那些呀?

      1 创建脚本块1: &lt;script language=”JavaScript”&gt;2: JavaScript code goes here3: &lt;/script&gt; 2 隐藏脚本代码1: &lt;script language=”JavaScript”&gt;2: &lt;!--3: document.write(“Hello”);4: // --&gt;5: &lt;/script&gt; 在不支持...

      哪位大师有javascript中所有style的属性呢?谢谢赐教1

      center"document.getElementById("test").style.display="none"都是一样的,只是不能像css那样连写,还有你可以用 document.getElementById("test").className="..."这样就可以直接调用css不用写在脚本里 ...

      javascript for in 遍历、可以拿到 index 吗

      区别一:for in是javascript 1.0 中发布的。for each in是作为E4X标准的一部分在javascript 1.6中发布的,而它不是ECMAScript标准的一部分。这将意味着存在各种浏览器的兼容性问题。for each in,对很多浏览器都不支持的...

      如何用js获取id 元素内容

      1、通过jquery的方式,使用id选择器方式获取节点,然后获取值。2、通过原生的dom方式,获取id的值。每一个HTML元素都使用id来进行一个标注,随后可以通过document.getElementById(“ID名称”)取得指定的ID元素对象,取得元素...

      javascript中有哪些流程控制语句

      循环可以将代码块执行指定的次数。 JavaScript支持不同类型的循环:(1)for语句:循环代码块一定的次数for(var box=1;box&lt;=10;box++) { document.write("box="+box+"&lt;br/&gt;"); } 运行的结果为:(2)for...in语句: 循环遍历...

      上一篇:js计算时间过去的时间_时间日期

      下一篇:javascript简化代码A=alertw=document.writeln_javascript技巧

      Top