




已阅读5页,还剩34页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
此文档收集于网络,如有侵权,请联系网站删除Javascript学习第一季(1)1 , javascript字符集:javascript采用的是Unicode字符集编码。为什么要采用这个编码呢?原因很简单,16位的Unicode编码可以表示地球人的任何书面语言。这是语言 国际化的一个重要特征。(大家也许见过用中文写脚本,比如:function 我的函数() );Javascript中每个字符都是用2个字节表示的。(因为是16位编码)2 ,大小写敏感:js是一种区分大小写的语言。注意下:以前我也犯过的错误。HTML是不区分大小写的。经常看见有人这么写, (这样写是对的)如果放到JS中,就必须使用onclick(小写哦!)同时XHTML中也只能使用小写。这个我们并不需要太关心,象这种问题,其实都可以自己给自己定一个标准,自己写程序的时候全部小写。另外每行程序后 分号 也是一样,我们都写上。3 ,注释:单行:/ 注释1/* 注释2 */ 多行:/* 注释3* 注释3* 注释3*/4 ,标识符:标识符就是一个名字,用来命名变量和函数。规则:第一个字母必须是字母,下划线(_),或美圆符号($)。为什么第一个字母不能为数字?如果第一个为数字,js很容易就把它当作数字处理了,那么命名就没意义了,js规定了后,就很容易的区分了标识符和数字了。5 ,直接量:就是程序中直接显示出来的数据值。比如:12 , 1.2 , “ hello “ , true , null , 1,2,3,4 这些都是直接量。6 ,保留字和关键字:具体是哪些,可以去。其实我们只要不取一些特郁闷的名字,都不会冲突的。7 ,js数据类型:3种基本的类型;数字,字符串和布尔值。2种小数据类型:null 和 undefined . (为什么叫小数据类型?因为他们只定义了一个值)1种复合类型:object. (在这个类型中,它的值可以是基本数据类型,也可以是复合类型,比如其他的object. ) 注意:在对象中有一个特殊的对象-function.(它是一个可以执行代码的对象.)其他的一些对象:数组:Date类 : 是日期的对象。RegExp类: 正则表达式的对象。Error 类:js中发生错误的对象。8 ,使用数据类型注意的地方:1):数字:由于数字有什么8进制,10进制,16进制等。八进制:var num = 011; /以0开头十六进制:var num =0x1f; /以0x开头所以对于js这个都能识别的语言来说,就必须得注意。alert(377); / 377alert(0377); /255 = 3 * 64 + 7 * 8 + 7 * 1进行算术运算有个重要的对象:Math.具体可以去网上下载手册,查询里面的方法。2个有用的函数:isNaN()和isFinite()isNaN() : 用于检查其参数是否是非数字值。/ 提示:是非数字哦。(not a number)document.write(isNaN(0) ) /返回falsedocument.write(isNaN(5-2) ) /返回falsedocument.write(isNaN (Hello) ) /返回trueisFinite(number) 函数用于检查其参数是否是无穷大。如果number是有限的,则返回true. 如果 number 是 NaN(非数字)或者是无穷大,则返回false;2):字符:youre right;这样写的话js会误以为 在you字母后就结束了,引起错误。所以当遇到这种情况的时候,必须用到转义。我们可以这么写:youre right;另外:你可以 搜索 转义序列表 。字符串的简单操作例子:var a = cssrain;var b = a.charAt(a.length-1); / 从字符串a中截取最后一个字符。 输出:nvar c = a.substring(0 , 2); / 从字符串a中截取第1,2个字符。 输出:csvar d = a.indexOf(s); / 从字符串a中查找第一个s出现的位置。 输出:1 从例子可以看出,基数都是从0开始的。var e = a.substring( a.length-1 ); /可以看出,substring第2个参数不写的话,/默认 是到最后。var f = a.substring( a.length-1 , a.length);/等价于3):数字跟字符之间的转换:数字转字符:var number_to_string = number + “ ”; /方法1:添加一个空的字符串。var number_to_string =String(number); /方法2:使用String()函数。var number_to_string =number. toString(); /方法3:使用toString()函数。注:toString()方法默认是以10进制转换。如果要使用8进制转换可以 这么写: number. toString(8);字符转数字:var string_to_number = string 0 ; /方法1: 字符串减去0。var string_to_number = Number(string) ; /方法2:使用Number ()函数。var string_to_number = parseInt(string) ; /方法3:使用parseInt ()函数。方法1中不能 用string+0 ; 这样会导致字符串拼接,而不是类型转换。方法2 中的Number函数转换,比较严格。比如:var a = 19cssrain86;var b = Number(a); /输出NaN.如果我们使用方法3。var c = parseInt(a); /输出 19可以看出parseInt()会自动忽略非数字的部分。parseInt()只取整数部分,忽略小数部分。parseFloat()会把小数部分也取到。和toString()一样,parseInt也有进制,默认是10进制。如果想使用8进制,可以这么写: parseInt( “077” , 8 ); / 输出63 = 7 * 8 + 7当字符以0开头的时候,我们必须把 第二个参数 指明,不然js可能会以8进制去转换。 4):布尔类型:布尔在数字环境中:true 转换为 1 ,false 转换为 0 。在字符环境中:true 转换为 “true” ,false 转换为 “false” 。布尔转换:var x_to_Boolean = Boolean(x); /方法1:使用Boolean ()函数。var x_to_Boolean = !x; /方法2:使用 感叹号。5):函数的定义:方法1:普通定义function square(x) return x*x;方法2:函数直接量定义var square = function(x) return x*x; /推荐使用方法3:构造参数var square = new Function(“x”,”return x*x;”); /效率低6):对象:如果有一个名为 cssrain 的对象 , 他有一个高度height的属性。那么我们可以这么引用:cssrain.height;还可以使用关联数组定义:cssrain“height”;创建对象:方法1:var point = new Object();point.x = 3;point.y = 5;方法2:使用对象直接量var point = x:3 , y:5 当然json也可以咯。对象在字符的环境下,会调用toString()方法。数字环境下,会调用valueOf()方法。布尔环境下,非空对象为true;7):数组:常规数组:以非负整数做为下标。image0关联数组:以字符做为下标。如:image“width”js不支持多维数组,但数组里面可以嵌套数组。创建数组:方法1:var a = new Array();a0 = “1”;a1 = 2;a2 = x:1, y:3;方法2: var a = new Array(“1” , 2 , x:1,y:3 );注意下:如果只传了一个参数;比如var a = new Array(3);那么它是表示:3个未定义元素 的 新数组。方法3:使用数组直接量var a =“1” , 2 , x:1 , y :3 ; /注意外面的 括号 , 不是花 括号。8):null和undefined:null表示无值;undefined : 使用一个并未声明的变量,或者使用了已经声明的变量但未赋值或者使用了一个并不存在的属性。undefined=null如果要区分:可以使用= 或者typeof运算符。9 ,新手常遇到的疑惑:var s =”you are right”;var b = s.substring(s.lastIndexOf(“ ”)-1 , s.length);疑惑:s是对象还是字符串,为什么字符串会有方法呢?回答:s是字符串。之所以有方法 ,是因为 string类型 有一个相应的对象类(String)。同样数字和布尔都有相应的Number , Boolean类。Js会内部进行相应的包装对象。String对象就替换了原始的字符串。总结:简单了介绍了js中的一些概念(词法结构) 和 数据类型(部分)。Javascript学习第一季(2)上篇文章讲了js中的一些概念(词法结构) 和 数据类型(部分)。这章我们 继续.然后了解下js中操作数据 和 函数的 作用域。 1,对象跟基本类型之间的转换:不管何时,只是对象非空,在布尔环境中都为true.如;new Boolean(false); new Number(0);new String(“”);new Array();上面虽然内部值是false,但对象的值是true;Object valueOf() toString()其中Date类,是先执行toString()转换。2,js中操作一个数据值:任何语言都有自己的操作数据的方法;Js也不例外,js有3种重要的方式来操作一个数据值。1) 复制它。例如把它赋给一个新的变量。2) 把它作为参数传递给一个函数或方法。3) 可以和其他值比较大小。Js通过传值和传址2种方式操作这些数据的值。从名称可以看处,传值 是通过传递值来操作数据。在赋值的过程中,对实际的值进行了拷贝,存储到一个新的变量中。拷贝的值和原来的值是2份完全独立的值。所以如果你改变了拷贝的值,并不会影响原来的值。当比较大小时候,通常进行琢个字节比较。传址 从名字来看,就是通过传递地址来操作数据。在赋值的过程中,对实际的值的地址(可以说是引用)进行了拷贝,他们不是完全的独立,所以如果你通过引用改变了值,那么原始的值也会改变。当比较大小的时候,通常是看他们是否引用同一个地址来比较。简单的传址例子:var a = new Date();alert(a.getDate();var b = a ;b.setDate(21);alert(a.getDate() / 输出21 3,一般来说:基本数据类型通过传值来操作的。(如果忘记了哪些是基本数据类型,可以往回看。)对象数据类型通过传址来操作的。(比如 数组和函数)例子:/传值a=1;b=a;b=2;alert(a); /输出 1/传址x=1,2;y=x; / 赋给y的只是x的一个引用,而不是x本身。数组已经在语句中被赋值了,执行过这段代码后,仍旧只有一个数组对象,只不过我们有2个对他的引用了。y0=2;alert(x0 + | +x1); /输出 2 | 2其中我们必须注意字符串:js中字符串是通过传址来复制和传递的,而他们是通过传值来比较的。对象和数组是用传值来传递的,只不过传递的这个值实际是一个引用,而不是对象本身。总结:类型复制传递比较数字传值传值传值布尔传值传值传值字符串不可变不可变传值对象传址传址传址不可变:在JS中,没有方法去改变字符串值的内容。对字符串来说,传值还是传址,意义不大。4,垃圾收集机制:Js中自动释放内存。比如:var s =”heelo”;var b = s.toUpperCase();s=b; /运行到这里后,js会自动检测不再使用某个对象,因为s=b了,所以js会自动释放字符串“heelo”所占的存储空间。即我们不能再获取原始的 “heelo” 值;.5 , javascript变量:Js是非类型的。它的变量可以放任何类型的值。变量的声明:var a ;var b ;或者var a , b ;或者var a=0 , b=1 ;重复声明 是合法的,如果 遗漏声明 , js会隐式的声明该变量。当然隐式声明的变量总是全局变量。6 , 变量的作用域:Js有2种:全局和局部。从名字的定义可以知道,全局变量的作用域是全局性的。在js代码中,处处都有定义。局部变量的作用域是局部的。在函数体内定义。同名的局部变量的优先级比同名的全局变量高,下面的例子说明了这点:var a =abc; /全局变量function check()var a = efg; /同名的局部变量document.write(a); check(); / 输出 efg看一个比较经典的例子: var scope = global; function f() alert(scope); /输出 undefined var scope = local; alert(scope); /输出 localf();为什么第一个会输出undefined 呢?因为js规定当 局部变量和全局变量的名称相同的时候,函数体内的同名全局变量会被隐藏。那么刚才例子 实际 等价于:function f()var scope; alert(scope); scope = local; alert(scope); f();OK,如果你看懂了这个例子,说明你对局部和全局的一些区别稍微了解了。7 , 变量的作用域:从里到外:词法作用域作用域链变量查找var x = 1;function f() var y =2 ; function g() var z =3 ;调用g()对象; z =3 ;调用f()对象; y =2 ;全局变量 x = 1 在此定义了吗? 是 否 获得值 在此定义了吗? 是 否 获得值在此定义了吗? 是 否 获得值 未定义8 , 客户端全局变量: 在客户端js中,Window对象代表浏览器窗口,他是一个全局对象。、比如 ;我们常用的 parseInt() , Math() 都是Window对象定义的属性。Js允许多个全局变量的执行环境,每个环境有不同的全局对象。比如:客户端js的每个独立的浏览器窗口,或者同一窗口的不同帧。其中的代码都运行在自己的执行环境中,具有自己的全局对象。当然可以使用 表达式 parent.frames0.x ; 来引用第一个帧中的全局变量 x ;这样就把不同帧中的代码联系起来了。不过这里有安全性问题。总结;主要讲了 传值和传址 和 函数的作用域 。对新手来说稍微难理解些。如果还有不懂,可以google 搜索资料或者联系我 ,可以去我的blog 给我留言 :Javascript学习第一季(3)上篇文章讲了js中的传值和传址 和 函数的作用域.这章我们来探讨js中的变量,表达式,和运算符 还有一些 js 语句。 升级中1, 表达式:最简单的表达式:直接量或者变量名。var a =1;直接量表达式的值:本身。变量表达式的值:该变量所存放或引用的值。2 , 运算符:一元运算符: 比如 - 3 二元运算符: 比如 3+4 三元运算符: 比如 ? : 新手常遇到的问题:递增运算符:比如:i = 1 ;j = + i ; / 前递增运算,即先对运算数进行递增,然后再去计算。/输出 i =2; j=2 ;i = 1 ;j = i +; / 后递增运算,即先去计算,然后再对运算数进行递增。/输出 i =2; j=1 ;3, 相等运算符:= : 赋值运算符;= : 相等运算符;= : 等同运算符;值NaN永远不会与任何值相等,包括自己。alert(NaN = NaN); /false NaN 意思为 Not a Number要检测一个值是否是NaN,可以使用全局函数isNaN();另外新手要注意:var a =1,2,3;var b =1,2,3;document.write(a=b); / 输出false .(这个其实是 第一章讲的内容。) / 虽然值相同,类型相同,但址不同。-var a =1,2,3;var b = a ;var c = a ;document.write(b=c);/输出true;-var a = 1;var b = true ;document.write(a=b); /输出 truedocument.write(a=b); /输出 false ; 值相同, 类型不同4, 比较运算符:要注意的就是字符串是进行琢个比较。而且会区分大小写。如果你的需求是不区分大小写:可以使用 String.toLowerCase() /纯小写String.toUpperCase() /纯大写 转换后 ,然后再去比较.5, in 运算符:要注意的是:左边的值是其右边对象的属性。比如:var a = x : 1 , y : 2 ;var b = “x” in a ; / truevar c = “toString” in a ; / true . 左边的值是其右边对象的属性。6 instanceof 运算符:要注意的是:左边的运算数是一个对象,右边的运算数是对象类的名字。比如:var a = new Date()a instanceof Date; / truea instanceof Object ; / truea instanceof Number ; / false 7, 3元条件运算符:要注意的是:第一个运算数必须是一个布尔值。X 0 ? 3 : 2 ;8, typeof运算符:要注意的是:由于typeof对所有的对象和数组都是返回 object;所以它只能区分对象和原始数据类型时才有用。要区别一种对象类型和另一种对象类型,可以使用 instanceof 和 constructor 属性。9, delete运算符:要注意的是:并不是所有的属性和变量都能删除。比如:用var 语句声明的变量不能被删除。另外;当delete删除一个不存在的属性时,返回true;(_,这个比较搞笑。)var a = 1;alert( delete a ); /返回 falsealert( delete a.x ); /返回 true还有一个应该注意:Delete 所能影响的只是属性值,并不能影响被这些属性引用的对象。比如:var my =new Object();my.height = new Date();my.width = my.height;delete my.height ;document.write(my.width);/ my.width仍然是引用Date对象10,void运算符:void的一个用途: 专门生成undefined值、alert( void(0) )alert( void(1) ) /都输出 undefined这里的undefined实际是 void()运算后的值。考虑到向后兼容性,用表达式void 0 比使用 undefined属性更有用.11,异常处理:抛出异常: throw捕捉异常:try / catch / finallyIf(x0) throw new Error(“x must not be negative!”);trycatch(e)finally /总是被最后执行 。通常进行 消除操作。12,with语句: var form = frame1.document.forms0; .value = “ “; form.address.value =” “;这样可以使用with语句代替;比如:with(frame1.document.forms0) name.value = “ “; address.value =” “;当然书上强烈不推荐使用with, 呵呵。效率低,问题多多。总结:主要介绍了js中的变量,表达式,和运算符 还有一些 js 语句。Javascript学习第一季(4)上篇文章讲了js中的变量,表达式,和运算符 还有一些 js 语句.这章我们来探讨js中的对象和数组。 比较难哦。做好心里准备吧。 深呼吸。1 , for / in :一种遍历(枚举)对象属性的方法,可以循环我们呢事先不知道的属性。它可以枚举处用户定义的所有属性,但却不能枚举出某些预定义的属性和方法。不能枚举的属性通常是继承的属性删除一个对象的属性: delete book.width ;从对象中移除了属性,在删除之后,用for/in将不会枚举该属性,并且用width in book 也检测不到该属性。for/in 的另一个重要的用途就是跟关联数组一起使用:(如果忘记关联数组的定义,可以看前面的章节。)for(stoct in port ) value + = get_value(stoct) * portstoct ; 2 , 通用的Object属性和方法:1):constructor属性:每个对象都有这个属性,他引用了初始化这个对象的构造函数。比如: var d =new Date(); /使用Date()构造函数,创建一个对象 d; d.constructor =Date; /true /属性d.constructor引用 Date ;这个属性有助于确定一个对象的类型;比如:我们想确定一个值的类型是否是Date 类型:If(typeof o=”object” )& (o.constructor=Date) / 首先看是否是对象,然后看是否引用Date上面的代码也可以写成:If(typeof o=”object” )& (o instanceof Date) / instanceof 运算符 来检测o.constructor 属性的值。3 , toStirng()和toLocaleString()方法:1):toLocaleStirng() 返回对象的一个本地化字符串。toString和toLocaleString一般都返回相同,但在子类中,有点区别:比如:Array , Date和Number都定义了返回本地化的值的toLocaleString()方法.4 , hasOwnProperty()和propertyIsEnumerable()方法:1):hasOwnPropertyvar a = x : 1 , y : 2;var k =a.hasOwnProperty(x);alert(k) /truealert( Math.hasOwnProperty(z) );/falsealert( Math.hasOwnProperty(cos) );/true 注:Math,cos() : 以弧度为单位计算并返回指定角度的余弦值。propertyIsEnumerable()跟返回的结果跟hasOwnProperty()相同;4 ,isPrototypeOf()方法:如果方法所属的对象是参数的原型对象。var a = x : 1 , y : 2;var k1= Ototype.isPrototypeOf(a); / o.constructor = Objectvar k2= Ototype.isPrototypeOf(Function); / Function.constructor = Objectalert(k1) /truealert(k2) /true5,数组:1)创建数组:数组直接量:var es = ;复杂点 var es = 1, x:1 , y : 2 , 2, x:3 , y : 4 ;还有一种方式:使用Array() 构造函数: V1 : 无参数: var a = new Array();空数组,和 var a = 相等 ; V2 : 多个参数: var a = new Array( 1,2,3,”tt”) ; /可以看出直接量定义 简单些。 V3 : 1个数字参数: var a = new Array (3); 具有3个元素的数组,每个元素的值为 undefined ;6, 数组的下标(索引):大小 : 0 = 下标 2的32次方 1 ;如果不在范围内,js会讲它转换为一个字符串,作为对象属性的名称;而不是作为数组的下标;比如: a-1.2 = “test” ; / 等价于 a“-1.2” =”test” ;/代码解释: 创建一个名为 “-1.2”的属性,而不是定义一个 新的数组元素。7, 添加数组的内存使用: a10 = “test” ; /添加新的元素内存的使用:比如:a0 = “1” ;a10 =” 10” ;那么js值给下标为0 和10的元素分配内存,中间的9个元素不被分配;注:数组也可以添加到对象中;比如;var a = new Circle(1,2,3);a0= “test” ;这个例子定义了一个名为” 0 “的新对象属性。只将数组元素添加到一个对象中并不会使它成为数组。8, 删除数组:var a = 1,2; delete a0; alert(a0) /输出 undefined alert(a1) /输出 2由例子可以看出,delete删除其实没有真正删除,只不过把元素设置为undefined; 如果要真正删除,可以使用Array.shift(),等方法。比如:var a = 1,2; delete a0; alert(a0) /输出 undefined alert(a1) /输出 2 a.shift(); /删除数组的第一个元素 alert(a0) /输出 2 alert(length:+a.length); alert(a1) /输出 undefined ; 1已经被删除了,其实数组已经的长度只有 1 了;9,数组的length:a49 = “a”;/ 那么这个数组的长度是 50 ;length属性经常用于遍历数组元素;比如: var a = “a” , “b “ ,”c” ;for(var i = 0 ; i a.length ; i+)alert(ai);这个是在假定元素是连续的,如果不是这种情况:必须检测每个元素是否被定义 : 比如:for(var i = 0 ; i y ,那么第一个参数就排在第2个参数后,比如; 1111 ,222 - 1111-2220 - 则 222 , 1111另外注意下 字母排序:因为js是区分大小写,所以排序的时候,把字符统一成大写或者小写,再排序。4):concat() 方法:var a = 1,2,3; a= a.concat(4, 5,6,7); a=a.join(); /输出 1,2,3,4,5,6,7 alert(a)注意:如果是数组里面还有数组 ,就不能展开了。比如:var a = 1,2,3; a = a.concat(4,5,6,6,7); alert(a); /这个看不出来 a = a.join(|); alert(a); /分割后,注意有个逗号- var c = 1,2,3; var d =new Array(1,2,3);alert(c); /1,2,3alert(d); /1,2,3/之所以不输出Object ,是因为/数组是一个具有额外功能层的对象./我们记住他的特殊性。5):slice() 方法:返回数组某一个片段。跟字符串的substring方法类似。6):splice() 方法:首先他跟 slice 方法 只有一个字母的差别,不过用处完全不同。他可以用来删除。var a = 1,2,3; a = a.splice(0,2); alert(a); / 输出 1, 2 a = a.splice(1,2); alert(a); / 输出 2 。 如果是 a = a.splice(0 , 1) ; 输出 1 a = a.splice(1,2); alert(a); / 没有删除任何数组 , 输出 空 数组他也可以插入数组。具体方法: var array1 = new Array(1,2,3,4); array1.splice(1,0,5);/在 第2个元素后面,插入 5 ; 如果第2个参数为0,则不删除。 document.write(array1+); /输出 1, 5 ,2 ,3,4 array1.splice(2,3,7,8) / 删除 第3个的 元素后的 3个元素。也就是 第3个,第4个,第5个元素。然后在这个位置上插入7,8 document.write(array1);/输出 1, 5 ,7,8注意:和concat()不同,splice并不将他插入的参数展开。也就是如果插入一个数组,他就是插入数组本身,还不是数组的元素。而concat()插入数组的话,就会把数组展开,插入数组中的元素,不过当插入的数组里还有数组的时候,就不会展开了。7):push() 方法和pop()方法:push(): 将一个或者多个数组 附加到数组的尾部。pop() : 删除数组的最后一个元素。var array1 = new Array(1,2,3,4); array1.push(5); document.write(array1+); /输出 1, 2 ,3 ,4,5 array1.pop() document.write(array1);/输出 1, 2 ,3 ,48):unshift() 方法和shift ()方法:跟push和pop唱反调。unshift (): 将一个或者多个数组 附加到数组的头部。shift ():删除数组的第一个元素。数组的一些方法是比较多,看起来也比较烦。所以大家应该有点耐心。总结:这章主要讲了对象和数组的一些方法。比较难记和难理解。不过任何事情都是从难到容易的过程。一次没看懂,再看一次。书读百遍,其意自现。也许你不需要读一百遍呢. _。是不是感觉看了这么多js概念,已经迫不及待的想自己写点例子什么的。好吧。下章我们 来点实战的。Javascript学习第一季(5)上篇文章讲了js中对象和数组的一些方法。这章我们先说说函数,然后来点实战。1 ,函数:function是一个定义一次 却可以多次调用的js代码。当一个函数被一个对象调用时,那么这个函数就叫做这个对象的方法。function cssrain( x , y) /code解释:cssrain : 为函数名;( ) : 为 运算符;x , y : 为 参数;2 ,函数的返回值:function a(x) document.write(x);function b(y) document.write(y); return y;alert( a(1) ) /因为没写return,所以返回undefinedalert( b(2) ) 3 function语句和函数直接量:function f(x) return x * x ; /var f = function(x) return x * x ; /第一个是function语句创建的,第二个是直接用函数直接量定义一个表达式,当然用这种方式,创建的也是匿名函数。虽然直接量可以匿名,但也可以指定函数名;比如:var f = function fact(x) return x * fact(x-1) ; /这样做的好处; 调用自身非常爽。4 函数命名:function like_this()或者 function likeThis() /驼峰式5 函数的参数:由于js是一种宽松类型语言,参数不需要指定什么数据类型。参数也可以多 也可以少,比如: function x(a,b) /我们写了2个参数如果我们传了3个参数,js会自动忽略掉多的/实例:function x(a,b) document.write(a+ +b); x(1,2,3,4);如果我们只传了一个参数,会出现什么情况呢?function x(a,b) document.write(a+ +b); x(1);我们发现输出 了undefined,所以js会把少的,赋予undefined;这样可能会引起程序错误。解决:function x(a,b)var b = b | ; / 这个是或运算符,如果前面的b为undefined,也就是false,他会取后面的空字符 document.write(a+ +b); x(1);6,实战:编写一个javascript图片馆: Image Galleryfunction showPic(whichpic) var source = whichpic.getAttribute(href); /获取当前点击的元素的属性href的值 var placeholder = document.getElementById(placeholder); /获取目标 placeholder.setAttribute(src,source); /* 设置目标的属性src。从而达到改
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025届春季中国融通集团校园招聘考前自测高频考点模拟试题及答案详解1套
- 2025年宁波市中医院公开招聘派遣制护士20人考前自测高频考点模拟试题含答案详解
- 2025广西仙城投资发展集团有限公司第一次招聘人员考前自测高频考点模拟试题附答案详解
- 2025广东广州市榄核咨询服务有限公司招聘1人笔试历年参考题库附带答案详解
- 贵州国企招聘2025六枝特区区属国有企业选聘市场化职业经理人笔试历年参考题库附带答案详解
- 浙江国企招聘2025温州平阳县国润控股有限公司公开招聘项目制专技人员9人笔试历年参考题库附带答案详解
- 2025黑龙江省水利水电集团有限公司总部机关及财务共享分中心员工岗位竞聘10人笔试历年参考题库附带答案详解
- 2025陕西建工控股集团有限公司校园招聘启动笔试历年参考题库附带答案详解
- 2025年金华东阳市人民医院招聘编外人员8人模拟试卷及1套参考答案详解
- 2025国网物资有限公司第二批高校毕业生录用人选的考前自测高频考点模拟试题及完整答案详解一套
- 2025年镇江市中考英语试题卷(含答案)
- 航海船舶因应气象预报方案
- 铝合金介绍教学课件
- 电气班组安全教育培训课件
- 《2025同上一堂思政课》观后感10篇
- SY4201.2-2019石油天然气建设工程施工质量验收规范设备安装塔类检验批表格
- 电机的工作原理课件
- 设计质量意识培训课件
- 2025年四川省高考化学试卷真题(含答案解析)
- 2025年新玩家股东招募协议书
- 食品安全知识培训会议记录范文
评论
0/150
提交评论