javaScript-javascript-初级到高级-笔记.docx_第1页
javaScript-javascript-初级到高级-笔记.docx_第2页
javaScript-javascript-初级到高级-笔记.docx_第3页
javaScript-javascript-初级到高级-笔记.docx_第4页
javaScript-javascript-初级到高级-笔记.docx_第5页
已阅读5页,还剩153页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

113.javaScript:它和标签语言都属于描述性的语言,用于和html结合从而强化网页数据的展现,虽然语法和结构上和java类似,但实际上它是和java完全不同的一门语言,它只是函数式的语言,其实从字面意思看,它就是java的一种脚本语言,至于脚本语言是什么,以后再说。javaScript在客户端做展现必须要有浏览器的支持。*javaScript包含3部分语法:基础语法、DOM(Document Object Model)、BOM(Brower Object Model)。114.javaScript的初步使用:其实和在html中引入css的做法类似,js的使用也分为内部使用和外部使用。*js的内部使用,介绍已经说过了,js是和html结合用于更好的展现数据,原则上,js是可以写在html的任何标签体中的,但一般来说,js的函数定义是写在head标签体中,而函数调用是在body标签体中,也就是上面定义方法,下面调用方法的意思,直接看例子程序:123My first JavaScript!45alert(“Hello js!”);6alert(“ok!);789第一个js10直接看4-7句, 这里就使用了js,在head标签中插入一个script标签,script就是js的关键字代表,插入script标签标表明要在此处插入一段js语句,和插入css一样,都要指定type属性,这里是type=”text/javaScript”标明标签的类型是javaScript(因为javaScript只是脚本语言的一种,还可以声明type=text/jscript,type=text/vbcript等等,所以这个type属性是指明你下面要使用哪种脚本语言,但是javaScript比较特殊,它是所有浏览器默认的脚本语言,所以你不写type属性时,默认的就是使用javaScript,当然,这是不好的习惯)。5,6句就是标签的值,也就是js的语句,对于标签语言来说,大小写都没所谓,但是script标签里的js语句就要严格遵守java的语法,因为里面就相当于是使用java语言,5,6句都使用了一个方法叫alert(),它的作用是将输入的实参以弹出对话框的形式表现出来,java里面是严格区分大小写的,那么js的语句也必须严格区分,alert()方法要求传的是字符串类型的实参,你就必须加”,语句与语句之间要用“;”隔开,其实不用“;”隔开也行,只不过是习惯性使用而已,反正在script标签体中写语句,你就必须按照java的语言规范来做。上面这段代码的表现形式就是在原来没插入script标签的基础上依次弹出了两个对话框,对话框的内容就是alert()方法的实参,这种对话框是Model对话框,即摩肽对话框,即你不处理的话无法做其他事情,还有一种是Modeless(非摩肽)对话框,不处理也可以做其他事情。*外部引入js的做法:做法非常固定,其实就是在head标签体中插入。这句话就为html文件从外部引入了一个js文件,language=”javaScript”和type=”text/javaScript”一样意思,哪一种都行,不过language属性是比较早期的属性,现在基本上被type属性取代。src是指定引入的js文件的相对路径,javaScript文件的后缀名就是“.js”,我们参考外部引入css的做法,我们在html文件的当前路径下用记事本新建一个“01.js”的文件,内容就写上上例的script标签的标签值就行了,如alert(“你好”);,保存后,就是设定script的src属性的值为“01.js”,这样就为html文件引入了“01.js”文件。115.js中的DOM机制的初步了解:DOM叫Document Object Model,即文件对象模型,大概意思是将整个Document 文件当做一个对象来读取里面的内容,至于如何将一个Document文件当做一个对象,后续再了解,这里主要是用一段例子代码来初步了解一下这种机制:document.write(“这是用javaScript打印出来的!”)这个例子中script标签用了document.write()这样一个方法,里面传的实参是:“这是用javaScript打印出来的!”,注意,这句话是一句标签语句,也就是说把一条标签语句变成字符串传到document.write()方法中,用这个方法将这条标签语句展现出来,在网页上展现的效果就是“这是用javaScript打印出来的!”,但明显的,这条语句已经不像以往的直接写在html的body体中展现出来,而是通过js的document.write()这种方式。那么你想一下,既然document.write()已经可以把一条标签语言展现出来,那么它同样可以把一个标签文件里的所有标签语言展现出来。DOM就是这样的一种机制,把整个标签文件,如html文件当做一个对象,然后使用静态方法document.write()把标签文件的语句逐条展现出来,每读取一条展现一条,而更深层次的如何将一个标签文件当作一个对象的具体做法以后再说。l 常用的方法还有document.getElementById();,得到标签对象;document.getElementsByTagName();返回指定tagName的所有标签对象所组成的数组。116.js中使用变量:js中的变量叫弱类型的变量,不用指定变量的类型,变量类型是你写了变量值后,系统自动判断变量的类型,但也可以指定变量类型为var,只有这样一个类型,仅仅表示变量的意思,没其他意思,变量在js标签体中指定,一旦指定后,在同一个html文件中的所有script标签体中的js语句都可共享该变量,见代码:var getting;声明变量getting = “Welcome!”;初始化变量document.write(getting); 在另一个script标签中打印出变量。l 还有一点表现是你可以进行一下形式的赋值:var a = 123;a = disalone;alert(a);得到最后的赋值,所以说javaScript的变量始终不会固定类型。l 在方法外边声明的变量是全局变量,在方法内部声明的变量是局部变量,这很合乎常理。但是javaScript中还有一条规则就是,如果声明变量的时候不使用var关键字声明的变量一律当做全局变量。也就是说,即便你在方法内部声明一个变量,但是没有使用var关键字,当这个方法运行后,这个变量就会被当做全局变量进行初始化,这时你在方法外边就可以访问这个变量,容易产生一些错误。所以我们在方法里面声明变量的时候一律要用var关键字,而且尽量所有的变量声明时都使用var关键字。关键字l 变量的命名不能和ECMAScript的保留字(为了以后的升级而保留的关键字)和关键字冲突。关键字:breakelsenewvarcasefinallyreturnvoidcatchforswitchwhilecontinuefunctionthiswithdefaultifthrowdeleteintrydoinstanceoftypeof保留字:abstractfinalprotectedbooleanfloatpublicbytegotoshortcharimplementsstaticclassimportsuperconstintsynchronizeddebuggerinterfacethrowsdoublelongtransientenumnativevolatileexportpackageextendsprivateboolean final short byte float static char int double longas namespace use false true null is117.js的调试:这是javaScript使用中比较头痛的地方,使用js的过程中,如果js的语法出现问题了,浏览器不会显示相关的打印内容,那么你就知道js的语句肯定哪里出问题了,但是浏览器不会给你报任何出错的信息,以前的程序只能硬着头皮一句一句的检查,或使用最原始的方法,删一点试一下,删一点试一下,或者像调试java那样用System.out.println()打印一些东西出来,但区别是js是用alert()方法弹出一些信息而已,做法效率很低,现在比较好的做法是使用浏览器的脚本错误提示功能,打开IE浏览器(必须是IE)工具Internet选项高级拉到差不多最下面把“禁用脚本调试”的两个选项的去掉然后把下面的“显示每个脚本错误的信息”的选上点确定。然后你在运行含有js的html网页时,出现错误的话浏览器会弹出一个对话框,点它的“详细信息”就可以看到js语句哪里出错了。这种做法只能说是没得选的情况下的做法,如果该网页是动态的网页,这种做法还是不行。更好的做法是用“firefox浏览器+它的firebug插件”,先下载firefox浏览器并安装,打开后,工具附加组件插件搜索“Firebug”安装插件即可。安装完成后在firefox浏览器的右上角会出现一个虫子标志,点小虫子的下拉按钮,把界面位置选择为“下”,并在 工具选项内容中把启动javaScript的选上。那么当你用firefox打开含有js的html网页时,当js出现语法错误了,Firebug的小虫子就会有提示,打开调试面板,点“脚本”就可以设置断点之类的调试操作了,“控制台”中是出现错误的所有js语句。118.js的基本语法:js的语法基本上也就是java的语法,但它的语法比java更简单些,或者说要求更低一些,这里说一下js语法与java语法的微小差别。js对变量的要求不高,是一门弱变量类型的语言,不是没有变量类型,而是所有变量类型都用var表示,如var i = 5; var str=”你好”; var islive = false;等,但是忽略掉var不写也是可以的,但是不推荐这样做,比如你可以i = 5; str = “你好”; islive = false;,因为js会自己根据变量值来判断变量类型,但这种做法不推荐,比较规范的做法是使用var来修饰变量,先定义变量再初始化,或者同时定义与初始化。js中定义浮点类型的时候可以写成var f = .123;和var f = 0.123是一样的。小数也是直接赋值给变量就行了,解析器会自行判断。声明变量的时候我们常常会这样写var a, b, c;这样就一次性声明了a, b, c三个变量,然后下面可以挨个给他们赋值,这种写法和java一样。其实最常用的变量声明方式是直接声明变量,然后赋值,如var a = 1;var s = HelloWorld;或者比较怪异的是var a=b=c=123;声明多个变量的同时赋值。或者这样写var a = 1, b=2;都是没问题的,方式非常灵活。l javaScript的Number类型。其实就是在javaScript中所有的数值的类型都归类于Number类型。这个Number类型没有像java一样很详细的将哪部分数字归类于那种具体的类型,它仅仅有一个最大的范围和最小的范围。如我们输出alert(Math.pow(2000, 2000);得到infinity,无穷大的意思,也就是超过了Number类型的最大数值范围。其实用Number的一些常量可以得到Number的最大范围以及最小范围,alert(Number.MAX_VALUE);得到1.7976931348623157e+308,也就是最大的正数。而alert(Number.MIN_VALUE);得到的则是5e-324,最小的负数。alert(Number.POSITIVE_INFINITY);得到infinity,而alert(Number.NEGATIVE _INFINITY);得到-infinity,这几个常量在实际使用中不知有什么意义。怎样判断一个数是无穷大,还是有穷大呢,用isFinite()方法js中Undefined的意思是变量的值没有定义,比如说你定义了一个变量var a;然后你直接打印a,得到的就是Undefined,表示变量值未定义。但是就算是这样,它也是合法的输出,你可以理解为这个变量的值就是Undefined(注意Undefined也是一种数据类型,这种数据类型只有一个值,就是undefined)。另外一种出现Undefined的情况是你的变量都没有定义时,就对该变量进行打印,比如你直接alert(b);这个时候也会出现b is not defined,不过是浏览器端报错的表现,程序出现错误了,你这个变量根本不存在。js还有一个输出信息叫NaN,它是Not a Number的缩写,什么时候会出现呢,比如我定义两个变量,var num = 2; var str = Hello; 一个是数字一个是字符串,如果我对着两个变量值进行运算,如alert(num/str);得到的就是NaN这个名词的输出,表示输出的结果不是数字,而在java这种强类型的语言中,这样的写法会报错,所以这是js变量弱类型的表现,另一个表现就是如果我alert(124*22);得到的是不是NaN呢?不是的,它得到的是124*22的运算结果,js是这样处理的,在做加减乘除等运算的时候,编译器会先检验运算符号两边的值是不是数值类型(js中的数字全部用数值类型表示),如果不是数值类型,它不会马上输出NaN,而是尝试将非数值型的变量转换为数值型,所以22就被自动转换成22的数值,依然可以进行运算,但是abc是不可能转换为数值类型的,所以会输出NaN。特殊的,js会将空串转换为0,相当于对0进行转换,所以alert(*123);得到0。关于NaN,还有一点要强调的是,NaN是一种特殊的Number类型,比如说alert(typeof NaN);得到的是Number。但是我们说abc*1将abc这个字符串转换为数值,得到的是NaN,表示不是一个数字类型,但是alert(typeof abc*1);的结果却是Number,但这并不表示abc就转换成了一个数值,abc*1的结果是NaN,而NaN是一个特殊的Number,所以alert(typeof abc*1);的结果是Number,仅仅是这样而已。然后就会出现这样一种情况,比如我用一个询问框向用户要一个年龄,首先,不管用户输入什么值,返回的都是一个字符串吧,因为prompt()方法的返回值必然是个字符串,那么我就应该将这个字符串转换为数值,“字符串*1”进行快速的转换,然后我就判断,如果转换后的值的类型是Number,我就做相应的操作,但是用户如果输入abc,转换虽然是NaN,但它也是Number呀,所以我必须判断转换后的值必须是Number类型,且不能是NaN。好了,判断一个值是不是Number类型用typeof关键字来判断呀,但是判断一个值是不是NaN怎么判断呢?“if(变量=NaN).”这样吗?不是的,NaN很特殊,它自身是不等于自身的,也就是alert(NaN = NaN);是false,原因是NaN不是一个具体的值,它只是表示这个变量它不是数值而已,所以不能这样判断,js中提供了一个函数叫isNaN()来判断某个变量是不是NaN,比如alert(isNaN(NaN);得到的才是true。l Number类有两个经常使用的方法: toFixed()方法,用于指定小数点后的位数,toFixed() 方法能表示具有 0 到 20 位小数的数字,超过这个范围的值会引发错误。如果不指定参数,参数默认为0。该方法会自动进行四舍五入。var oNumberObject1 = new Number(68);alert(oNumberObject1.toFixed(2); /输出 68.00var oNumberObject2 = new Number(68.125);alert(oNumberObject2.toFixed (2); /输出 68.13 toExponential()方法,将数字转成科学计数法的形式,结果以字符串形式返回。有一个参数,指定要输出的小数的位数。var oNumberObject = new Number(68);alert(oNumberObject.toExponential(1); /输出 6.8e+1 toPrecision()方法,指定整个数字的位数(整数位数+小数位数)。如果不指定参数,默认将数字后面多余的零去掉,如68.4500转换成68.45。该方法会自动进行四舍五入。var oNumberObject = new Number(68.125);alert(oNumberObject.toPrecision(4); /输出 68.13js里的语句(值)是区分大小写的,与java一样,不多说了。用“+”合并字符串,和java一样。但对于+号来说呢,我们知道,在js和java中,+号可以是数字的运算符,也可以是字符串的相连符。之前我们的观点是只要一个表达式中有字符串相连,其他非字符串的变量都会变成字符串进行相连,其实这样观点是错误的。不管在java还是js中,都会有,比如一个布尔类型的 变量boo = true;那么你输出boo + 布尔的时候,得到的结果是“true布尔”,表明boo这个变量值转换为字符串与后面的字符串做相连了。而输出123+456得到的是“123456”这个字符串的输出,符合以往的观点,但是1+2+3+456呢,输出的则是6456,这个也是一个字符串,问题是为什么不输出123456这个字符串呢?原因是当这个表达式的开头的两个或两个以上的值是数值的,则先按照数值相加得出结果,再把这个数值转换为字符串和后面的字符串相连,得到最后的字符串输出,而如果一开始是字符串,则后面的所有标量都会转换为字符串相连,不会再出现数值的相加,如123+4+5+6,得到的是123456这个字符串的输出。这个特点在java和js中都是成立的。定义数组,有所区别:主要是你指定数组的长度时不起作用的,如var arr = new Array(3); arr0 = 1; arr1 = 2; arr2 = 3; arr3 = 4;我虽然已经指定了数组arr的长度是3,但是我却可以指定arr3的值,我甚至还可以指定arr10的值,也就是说,你规定数组的长度在js中是不起效果的,老马说:js底层数组的原理是,它把每个数组看成和Dog,Cat一样的一般对象,我们知道,一般对象是有自己的成员变量的,而对于js的数组对象来说,每个底标都是它的成员变量,如1,2,3,4,5n等都可以是它的成员变量,然后底标对应的值就是成员变量的值,而java中是不能用数字做变量名的,这就是不同点。所以js的数组和java的数组在原理上就有区别,除了这小点外,其它基本上都是相通的。还有一个重要的区别就是js的数组不管是指定长度还是指定数组的值都是用小括号()的,当()中输入一个数时,表示你要指定这个数组的长度,如果输入多个数,用逗号隔开,表示你要初始化数组的元素,而不是java的指定数组长度用中括号,指定数组的值用大括号,比如js指定数组长度var arr = new Array(3);指定数组值var arr = new Array(1, 2, 3, 4, 5);而java则是int i = new int3; int i = new 1, 2, 3, 4,5;比较特殊的是,js中,数组的长度是数组最大的下标值加1,它的意思是,var a = new Array(); a4 = dialone; alert(a.length);输出的结果是5,虽然数组中只有一个元素,但是这个元素的下标是4,所以数组的长度就是4+1=5。前提是最大的数组下标必须是正整数或者是0,如果是负整数,不管你最大的数组下标是什么,数组的长度都是0。js的数组还有一种创建的方法,上面是用()创建,也可以用来创建,比如var array = ;表示创建了一个数组长度为0的数组,相当于var array = new Array();但是区别在于,var array = new Array(3);这里的3仅仅表示数组的长度,你这时输出array0得到undefined,而var array = 3;这里的3则表示这个数组的0位元素是3,这时输出array0的结果是3,这是两种数组声明方式的不同点,的声明方式无法直接声明数组的长度(要声明数组长度的话直接指定length属性的值就行了),只能直接初始化数组元素,而var array = 1,3,abc,true;和var array = new Array(1,3,abc,true);是一样的意思。actionScript的数组用push()方法向数组中添加元素,返回值是被添加进去的元素的下标值+1,也就是新数组的长度,因为数组的长度是最大的元素下标值+1嘛,那种语言都是这样的。javaScript也有push()方法,用法一样,作用是往数组的最后面添加元素,以往我们向数组的最后添加元素的做法是var array = new Array(); arrayarray.length = element;用数组的长度作为新的下标值,就始终可以在数组的末尾添加一个元素,当然,你也可以使用现成的push()方法。而且push()方法可以同时向数组末尾添加多个元素,比如array.push(1,3,5,abc);这样就同时向数组中添加了4个元素。javaScript中也使用delete关键字,比如说你要去掉数组array下标为1的的值,可以delete array1;这种写法相当于array1 = undefined;不会改变数组的长度。这里介绍数组的join()方法,它的用途是将数组内的所有元素转化为字符串,然后相连成一个长字符串。这个方法是有一个字符串类型参数的,用来充当短字符串相连时的分隔符,比如var array = new Array(1,2); alert(array.join();输出的是12,如果你不输入这个参数,默认用逗号作为分隔符,如alert(array.join();得到1,2。实际使用中有什么意义呢?如果你想让大量的短字符串连接成一个长字符串,以往的做法是:var str = ;for(var i = 0; i 100; i+)str += abc;然后你输出str 的话就得到长字符串,但是这种做法效率并不高,下面介绍用join()方法来提高效率:var array = new Array();array0 = ;for(var i = 0; i false);得到的结果是true,它实际是将true转换为数字1,false转换为数字0进行比较。更特殊的是,在java中&或|这种逻辑运算符的两边必须是Boolean类型的变量,但是在js中则不一定,我可以alert(3 & 4);得到的是4,alert(true & 4);得到的是4,这是非常奇怪的,原因是js把0这个数值在判断真假时潜意识的认为是false,而其他数值都认为是true,所以(3 & 4);判断的过程是先判断3,是true的,因为是短路与,所以还会判断后面的4,也是true,最后输出后面的4,而如果(0 & 3),也是先判断0,是false的,因为是短路与,所以不判断后面的内容了,直接输入找到的第一个是false的数值,所以输出0,同理(0 | 3)输出3,(3 | 0)输出3,所以说,在js中,数值是可以当做真假来判断的,0是假,其他都是真,按照&,|正常的逻辑判断后,输出是一个数值,虽然这种比较没什么意义,如果你想输出boolean类型的值,看下面。而这种写法稍微有点意义,alert(!1);得到true,alert(!0);得到false,什么意思呢,在js中,所有数值,只有0在代表真假时默认代表false的,而其他数值都表示true,但是如何将一个数值快速转换为一个boolean类型的值呢,在它前面加“!”就行了,比如说1潜在是表示true的,那么!1就转换为boolean类型了,但是这样写就变成相反了,变成false,所以我们想知道1潜在是真还是假,alert(!1);就行了,在一个数字前面加上“!”是快速得知这个数值是真假的方法。那么alert(!(3 & 4);输出的一定是true,因为(3 & 4)输出4,而在4前面加“!”得到就是true。与上面类似的,在js中,字符串也有真假的隐藏意思。默认的,js认为空串在真假判断是表示假,其他任何字符串表示真,不举例了,与上面类似。l =,javaScript中一个特殊的运算符,叫严格相等。它和“=”的区别在于,“=”只要求值相等,而“=”则要求值和类型都相等才返回true。我做的实验是用1和true进行“=”比较,得到true,而用1和true进行“=”比较,得到false,而用!1和true进行“=”比较,得到true。注意,用其他数字不行,只能用1,这是个很特殊的数字。使用substring()方法,如var str = “abcdefg”; document.write(str.substring(3, 6); 截取出来的是def,注意substring(3,n);截取出来的是第3位到第n-1位。对于javaScript中的String类,它还有不少的方法,有些常用,有些不常用,下面用一个例子介绍:var str = some string here;alert(str.length);/输出16,字符串的长度,包括那些空格。alert(str.indexOf(o);/输出1,返回字符串中某个字符所在的下标,从左往右先找到该字符,再从0开始数得到下标值,没有 /找到该字符的话返回-1。alert(str.lastIndexOf(s);/输出5,和indeOf()方法不同的是,这里先从右往左找到该字符,然后从左往右数下标值(注意要 /把空格当做一位)。alert(str.charCodeAt(0);/输出115,先根据参数为下标找到字符,然后返回该字符的unicode编码。alert(String.fromCharCode(65,66,67,68); /输出ABCD,它会将形参中的每个数字看成unicode码,转换为相应的字符后组成 /字符串返回。alert(str.replace(some,much); /输出much string here,进行字符串中字符的替换。alert(str.substr(1,2); /输出om,从下标1开始往后截取两个字符(注意上面只是进行字符替换,没有重新赋值,所以这里的 /str还是原来的值)。alert(str.substring(1,2); /输出o,从下标1开始截取,截取到下标为2的字符(注意不包括下标为2的字符,和java的substring() /方法一样)。alert(str.toLowerCase(); /转成小写。alert(str.toUpperCase(); /转成大写。alert(str.split();/输出s,o,m,e, ,s,t,r,i,n,g, ,h,e,r,e,分割字符串,返回值是一个数组。三目运算符,如:var result = (34)?”Y”:”N”; document.write(result);得到的结果是N,和if(34)System.out.println(“Y”);elseSystem.out.println(“N”);是一样的,但java比较强大,可以直接System.out.println(34)?”Y”:”N”);而js不可以document.write(34)?”Y”:”N”);所以要求的是js一般要先声明变量再使用变量。10其他的if,while,do while,switch等分支语句都是和java一样的,其实就是你在java中怎么写,在js中就怎么写。但是js中不存在java的elseif,只能写成else if,不能贴在一起,不是一个关键字。11这里介绍一下js的Date类,var today = new Date(); 得到的是一个Date对象,可以使用它的getHours()方法得到当前的小时数,如today.getHours();继续介绍这个Date类的一些方法:alert(today.getFullYear(); 返回一个完整的年份(而不用getYear(),已经过时,返回值异常的)。alert(today.getMonth(); 返回月份,1月到12月用011表示,这个要注意。alert(today.getDate(); 返回几号。alert(today.getDay (); 返回星期几(注意星期天用0表示,而星期一至六用16表示)。alert(today.getHours (); 返回小时。alert(today.getMinutes(); 返回分钟。alert(today.getSeconds(); 返回秒。alert(today.getMilliseconds(); 返回毫秒。alert(today.getTime(); 返回当前时间的毫秒数,从1970-1-1开始算。alert(today); 直接将一个Date对象输出的话会得到Thu Jan 10 2013 20:44:51 GMT+0800这种形式的值。上面的都是get方法,其实还有对应的set方法,这些set方法的用途是,比如我用set方法设定了一个日期:var birthDay = new Date();birthDay.setFullYear(1990); birthDay.setMonth(3); birthDay.setDate(22); 这个日期设定为1990-4-23,注意设定Month的时候是要减去1的,那么我想知道这个日期是星期几,我就可以:alert(birthDay.getDay();得到0,表示当时是星期天。这里介绍一下javaScript中Date类的容错机制,比如说我现在要用户输入一个日期(一般我们不会让用户输入日期,而是进行日期的选择,这里仅为举例),用户输入了1990-3-32日,明显是不存在这样的日期的,那么如果我们将这个日期set成js的一个Date对象:var birthDay = new Date();birthDay.setFullYear(1990); birthDay.setMonth(2); birthDay.setDate(32); 然后输出这个日期,实际得到的是Sun Apr 01 1990 20:51:19 GMT+0800,也就是1990-4-1,所以说,js会自动判断日期的正确与否,然后将超过的部分往下推,得到一个新的日期,所以说,如果我们想知道用户输入的日期是否正确,我们可以将用户的日期set成一个Date对象,然后调用这个Date对象的get方法得到年月日,如果和原来的值不相同,表示用户输入有误。l 再介绍一个方法是charAt()方法,用法是截取字符串中指定底标的字符,如:var str = “abcde”;document.write(str.charAt(2);得到的是c,也就是截取”abcde”中底标是2的字符。str.charAt(2);相当于str2;它的返回值是一样的,都是String类型。所以访问一个字符串也可以看做一个数组,它里面的字符就相当于这个数组的元素。所以你可以用数组的方式来访问。但是charAt()可以兼容IE和火狐,而后面那种IE不支持。12document.write();里面传的字符串你就把它看成是一行标签语句即可,因为它和我们用html直接展现出来的效果没有区别,如它可以自动识别字符串中的是换行符。l js中进行快速的类型转换。其实js来去没有几种数据类型,它是弱类型的,一般我们常用到的类型的转换是在Number,String,Boolean这三个类型之间进行的,当我们想让这三种类型的数值进行快速的转换,也就是不依 靠js的转换函数进行转换,而是根据js本身语法的一些特性进行转换,看下图:String类型Boolean类型Number类型空串+要转换的变量要转换的变量*1(前提必须是数字型字符串)空串+要转换的变量要转换的变量前加“!”要转换的变量前加“!”不可以l 介绍一个简单的关键字:typeof。它的作用是判断一个变量是什么类型,用法是“typeof 变量”,这样就会返回相应的变量类型,比如alert(typeof 123);得到Number;alert(typeof abc);得到String;alert(typeof true);得到Boolean。所以,你可以用这个关键字来判断你进行类型转换时是否成功,比如alert(typeof !abc);得到的就应该是Boolean;alert(typeof (1+2);应该得到Number等等,注意1+2要用括号括起来,提高有限处理的级别,否则就相当于alert(typeof 1)+2);得到的是Number2。typeof还有一个特殊的地方就是,当我们在javaScript中声明一个变量,但不给他赋值,也不使用var关键字,如“a;”,那么你运行的时候,就会报错“a is not defined”,但是如果你在这个变量前面加typeof关键字,则不会报错,如果你alert(typeof a);得到的是Undefined。119.js的事件处理:其实就是java的监听器,只不过java的监听器的内容比较广,涉及的事件处理比较多,比如,在java中,对鼠标这个事件源对象,会有几种事件处理,对于按钮这个事件源对象也有几种事件处理,而对于js来说就没有那么繁多的事件,只有几种比较具有代表性的事件会包装成一个处理事件,下面逐一介绍js有哪些处理事件以及对应的时间处理方法:onFocus事件:当用鼠标将光标指定在html的表单中的select,text,textarea等输入模块,准备输入文本时,会触发onFocus事件,并执行里面的js处理语句,如下代码:上面代码的意义是,在html网页中插入一个form,然后在form里面插入一个输入框text,指定text的name以及value(以往

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论