JavaScript(JS)

    xiaoxiao2021-03-25  206

    一  JS的简介

                JavaScript是基于对象和事件驱动的脚本语言,主要应用在客户端。

                基于对象:提供好了很多对象,可以直接拿过来使用

                事件驱动:HTML做网站静态效果,JavaScript动态效果

                客户端:专门指的是浏览器

                特点:交互性(信息的动态交互)

                           安全性(不可以直接访问本地磁盘)

                           跨平台性(只要是可以解析JS的浏览器都可以执行,和平台无关)

                JavaScript和Java的区别:

                        1  Java是sun公司,现在是Oracle;js是网景公司

                        2  JavaScript是基于对象的,Java是面向对象的

                        3  Java是强类型的语言,JS是弱类型的语言

                                       比如Java里面  int ="10";

                                       js:var i=10;var m="10";

                        4  JavaScript只需解析就可以执行,而Java需要先编译成字节码文件,再执行

                JavaScript的组成(三部分)

                     ECMAScript

                             ECMA:欧洲计算机协会—制定JavaScript语法

                    BOM:

                             broswer  object model    浏览器对象模型

                    DOM:

                             document object model  文档对象模型

    二  JS和HTML的结合方式

              1  使用一个标签<script type="text/javascript">js代码</script>

              2  使用script标签,引入一个外部的js文件

                       创建一个js文件,demo.js

                       使用此方式的时候,就不要在script标签里写js代码了,不会执行

    demo.js代码

    alert("第二种方式");

    html代码

    <html> <head> <title></title> </head> <script type="text/javascript"> alert("第一种方法"); </script> <script type="text/javascript" src="demo.js"> </script> <body> </body> </html>

    三  JS的原始类型和变量声明

                Java的基本数据类型:byte,short,int,long,float,double,char,double

                js的原始类型:

                       stringL字符串

                                 var  str="abc";

                       number:数字类型

                                 var m=123;

                       boolean:true和false

                                 var b=true;

                       null:var date = new Date();

                               表示获取一个对象的引用,null表示对象的引用为空,所有的对象的引用也是object

                       undifinedL:定义一个变量,没有赋值。var aa;

              typeof():查看的当前变量的类型

    <html> <head> <title></title> </head> <script type="text/javascript"> //定义一个字符串 var str="abc"; alert(str); //定义一个数字 var m=123; alert(typeof(m)); //定义一个布尔类型 var flag=true; </script> <script type="text/javascript" src="demo.js"> </script> <body> </body> </html>

    四  JS的语句

                Java里面的语句

                      if判断

                      switch语句

                      循环  for  while  do-while

                js里面的这些语句

                       if判断语句:

                             

                       switch语句:

                               Java里面支持数据类型。在JDK1.7开始支持string类型

                               js里面都支持

                                switch(a){

                                           case 5:

                                                       break;

                                           case 6:

                                                      break;

                                            ......

                                           default:

                                   }

                       for:

                               

                       while:

                                   

                       do-while:

    <html> <head> <title></title> </head> <script type="text/javascript"> var a=5; //if判断 if(a==5) alert("5"); else alert("不是5") var b=6; //switch语句 switch(b){ case 3: alert("3"); break; case 6: alert("6"); break; default: alert("other"); break; } //while语句 var i=5; while(i>1){ alert(i); i--; } //for循环 for(var s=0;s<=5;s++){ //变量是var ,而不是int alert(s); } </script> <body> </body> </html>

    五  JS的运算符

               +=:   x+=y   ====>x=x+y 

                大部分运算与Java都一样,以下为不一样的

                 在js里面不区分整数和小数

              字符串相加和相减的操作

              boolean:如果设置成true,相当于这个值是1;

                              如果设置成false,相当于这个值是0;

              ==和===的区别:都是做判断

                   ==比较的是值;===比较的是值和类型

    <html> <head> <title></title> </head> <script type="text/javascript"> var a=123; alert(a/1000*1000); //在Java里面得0,在js里得123,在js里面不区分整数和小数 //字符串的操作 var str="456"; alert(str+1);//在Java和js里都是4561,正常的字符串链接 alert(str-1);//相减的时候,执行减法的运算。得455 //如果字符串不是数字,会提示NAN //boolean类型操作 var flag=true; //等于1 alert(flag+1); var flag1=false; //等于0 alert(flag1+1); //==和===的区别 var aa=5; if(aa==5){ alert("5"); } else alert("other"); var aa="5"; if(aa===5){ alert("5"); } else alert("other"); </script> <body> </body> </html>

    六  99乘法表的练习

             

    <html> <head> <title>实现99乘法表</title> </head> <body> <script type="text/javascript"> document.write("<table border='1' bordercolor='red'>");//document里面使用双引号,如果设置标签的属性需要使用单引号,document可是输出常量,变量还可以输出HTML标签 //循环行 for(var i=1;i<=9;i++){ document.write("<tr>"); for(var j=1;j<=i;j++){ document.write("<td>"); document.write(j+"*"+i+"="+j*i); document.write("</td>"); } document.write("</tr>"); } document.write("</table>"); </script> </body> </html>

    七  JS的数组

              什么是数组?

                    使用变量,var m=10;

                    java里面的数组,定义 int []  arr ={1,2,3};

              定义方式(三种)

                    第一种:var arr=[1,2,3];     var arr=[1,"4",true];

                    第二种:使用内置对象 Array      var  arr1=new Array(5) ;  //定义一个数组,长度为5.

                                                                       arr1[0]="1";

                    第三种:使用内置对象Array

                                  var arr2=new Array(3,4,5);   //定义一个数组,数组里面的元素是3,4,5

           数组里面有一个属性:length—获取数组的长度

           数组里面可以存放不同的数据类型的数据

    <html> <head> <title>数组的定义方式</title> </head> <body> <script type="text/javascript"> //第一种方式定义数组 var arr=[1,2,"3"]; document.write("第一种方式"+arr+",数组的长度"+arr.length); //第二种方式定义数组 var arr1=new Array(3); arr1[0]="a"; arr1[1]="b"; arr1[2]="c"; document.write(",第二种方式"+arr1); //第三种方式定义数组 var arr2=new Array(6,7,8); document.write(",第三种方式"+arr2); </script> </body> </html>

    八  JS的函数

               在js里面定义函数(方法)有三种方法

               在函数的参数列表里面,不需要写var,直接写变量名称就可以

                        第一种:使用一个关键字function

                                        function 方法名(参数列表){

                                                      方法体;

                                                      返回值可有可无(根据实际需要)

                                        }          

                        第二种:匿名函数

                                         var add  =   function (参数列表){ 方法体和返回值}

                        第三种:动态函数(用得少)

                                       使用js里面的一个内置对象 Function

                                           var   add= new Funcrtion ("参数列表","方法体和返回值");    

    九  JS的全局变量和局部变量

               全局变量:在script标签里定义一个变量,这个变量在页面中js部分都可以使用            局部变量:在方法体内部定义一个变量,只能在方法体内部使用

    <html> <head> <title>js的变量</title> </head> <body> </body> <script>\ var aa=10; alert("在方法外面调用全局变量aa="+aa); function test(a,b){ var nn=20; alert("在方法内面调用全局变量aa="+aa); alert("在方法内面调用局部变量nn="+nn); } test(); //alert("在方法外面调用局部变量nn="+nn); //不好使 <script> alert("在另一个script里面调用全局变量aa="+aa); //alert("在另一个script里面调用局部变量nn="+nn); //不好使 </script> </html>

    十  script放的位置

              建议把script标签放到</body>后面            如果现在有一个这样的需求:                      在js里面需要获取到input里面的值,如果把script标签放在head里面                      会出现问题                      HTML解析是从上到下解析的,script标签放到的是head里面,直接在里面取input里面的值,                     因为页面还没有解析到input那一行,肯定取不到。

    十一  JS的重载的简单介绍

               什么叫重载?方法名相同,参数列表不相同

                js是否有重载?没有

    <html> <head> <title>js的重载</title> </head> <body> </body> <script> function add1(a,b){ return a+b; } function add1(a,b,c){ return a+b+c; } function add1(a,b,c,d){ return a+b+c+d; } alert(add1(2,2)); //NAN alert(add1(2,2,2)); //NAN alert(add1(2,2,2,2)); //8 </script> </html>

    十二  JS的string对象

                  创建String对象                        var str="123";

                 方法和属性(文档)                        属性 length:字符串的长度

                           方法:                             1 与HTML相关的方法                                       bold():加粗                                       fontcolor():设置字符串的颜色                                       fontsize():设置字体的大小                                       link():将字符串显示成超链接                                       sub():下标                                       sup():上标

    <html> <head> <title>String</title> </head> <body> </body> <script> //length属性 var str ="abcde"; document.write(str.length); //bold方法 document.write("<hr/>"); var str1="jiacu"; document.write(str1.bold()); //fontcolor document.write("<hr/>"); var str2="字体颜色"; document.write(str2.fontcolor("red")); //fontsize() document.write("<hr/>"); var str3="zitidaxiao"; document.write(str3.fontsize(5)); //link document.write("<hr/>"); var str4="超链接"; document.write(str4.link("hello.html")); //点击超链接到hello.html页面 //sub和sup document.write("<hr/>"); var str5="100"; var str6="200"; var str7="300"; document.write(str5.sub()); document.write(str7); document.write(str6.sup()); </script> </html>

                                2 与Java相似的方法

                                          concat():链接字符串   

                                          charAt():返回指定位置的字符串                                       indexOf():返回字符串位置                                       split():把字符串切分成字符串数组                                       replace():替换字符串                                             传递两个参数:第一个参数是原始的字符,第二个是要替换成的字符                                       substr():从第几位开始,向后截取几位                                       substring():从第几位开始,到第几位结束,但不包含最后那一位  

    <html> <head> <title</title> </head> <body> </body> <script> //concat方法 var str1="abc"; var str2="efg"; document.write(str1.concat(str2)); //charAt() document.write("<hr/>"); var str3="abcdefg"; document.write(str3.charAt(0)); //如果字符的位置不存在,返回空字符串 //indexOf() document.write("<hr/>"); var str4="hijklmn"; document.write(str4.indexOf("j")); //如果字符不存在,会返回-1 //split() document.write("<hr/>"); var str5="-b-c-d"; var arr1=str5.split("-"); document.write("分割后数组长度"+arr1.length); //replace() document.write("<hr/>"); var str6="abcdefg"; document.write(str6.replace("b","B")); //substr()和substring() document.write("<hr/>"); var str7 ="abcdefghijklmn"; document.write("substr的结果"+str7.substr(5,3)+"<br/>") //fgh,从5开始向后截取三位 document.write("substring的结果"+str7.substring(5,3)); //de 截取第三到第四位 [3,5) </script> </html>

    十三  JS的Array对象        创建数组(三种)             var arr1= [1,2,3];             var arr2=new Array(3);//长度是3             var arr3=new Array(1,2.3);//数组中的元素是1 2 3        属性:length:查看数组的长度       方法:            concat():链接两个或更多的数组,并返回结果            join():元素通过指定的分隔符进行分割            push():表示向数组末尾添加一个或更多个元素,返回数组的新的长度            pop();删除最后一个元素并且返回删除的那个元素            reverse():颠倒数组中元素的顺序

    <html> <head> <title>js的 Array对象</title> </head> <body> </body> <script> //length属性 var arr1=[1,2,3]; document.write(arr1.length); //concat() document.write("<hr/>"); var arr11=[1,2,3]; var arr12=[4,5.6]; document.write(arr11.concat(arr12)); //join() document.write("<hr/>"); var arr2=new Array(3); arr2[0]="a"; arr2[1]="b"; arr2[2]="c"; document.write(arr2); //默认以分号分隔各个元素 document.write("<br/>"); document.write(arr2.join("-"));//以-进行分隔 //push() 也可以传进一个数组,把数组当做一个整体元素传进去,不管数组有多长,新的长度只加1,数组中的所有元素合并成一个整体 document.write("<hr/>"); var arr3=new Array(3); arr3[0]="tom"; arr3[1]="lily"; arr3[2]="lucy"; document.write(arr3); document.write("长度为"+arr3.length); document.write("<br/>"); document.write("新的长度"+arr3.push("jack")); //pop() document.write("<hr/>"); var arr4=["zhangsan","lisi","wangwu","zhaoliu"+"<br/>"]; document.write("old array: "+arr4); document.write("return: "+arr4.pop()+"<br/>"); document.write("new array: "+arr4); //reverse() document.write("<hr/>"); var arr5=["aaaaa","bbbbb","cccc","dddd"]; document.write("old array: "+arr5+"<br/>"); document.write("new array: "+arr5.reverse()); </script> </html>

    十四  JS的Date对象         在Java里面获取当前时间                Date date = new Date();                    //格式化                    //toLocaleString js里面获取当前时间                var date = new Date();

                   toLocaleString():转换成本地形式的时间                 getFullYear():得到当前的年,返回四位                getYear():得到当前的年,返回两位

                   getMonth():得到当前的月(返回的是值0-11)

                  getDay():获取当前的星期(返回值0-6)星期日作为一周的第一天,返回的是0;

                  getDate():获取当前的日(1-31)               getHours():获取当前的小时(0-24)               getMinutes():获取当前的分钟(0-59)

                  getSeconds():获取当前的秒(0-59)

                   getTime():获取毫秒数,返回的是1970年1月1日至今的毫秒数

                  应用场景:第一次访问网站很快,第二次访问网站很快,由于缓存

                 使用毫秒数来处理缓存的效果(没有缓存)

                  http://www.baidu.com?毫秒数

    <html> <head> <title>js的Date对象</title> </head> <body> </body> <script> //获取当前时间 var date =new Date(); document.write(date); //转换成习惯的格式 document.write("<hr/>"); document.write(date.toLocaleString()); //得到当前的年 document.write("<hr/>"); document.write("year: "+date.getFullYear()); //获取当前的月 document.write("<hr/>"); var month=date.getMonth()+1; //返回的是0—11 document.write("Month: "+month); //获取当前的星期 document.write("<hr/>"); document.write("Week: "+date.getDay()); //0-6 //获得当前的日 document.write("<hr/>"); document.write("day: "+date.getDate()); //获取当前的小时 document.write("<hr/>"); document.write("hour: "+date.getHours()); //获取当前的分钟 document.write("<hr/>"); document.write("Minutes: "+date.getMinutes()); //获取当前的秒 document.write("<hr/>"); document.write("Seconds: "+date.getSeconds()); //获取当前的毫秒 document.write("<hr/>"); document.write("times: "+date.getTime()); </script> </html>

    十五  JS的Math对象

                数学的运算                   不像Date,String等,不是对象的方法,是静态方法,使用可以直接使用Math.方法名称()                    ceil(): 向上舍入                    floor():向下舍入                    round():四舍五入                    random():得到随机数(伪随机数)(0.0-1.0)

    <html> <head> <title>js的Math对象</title> </head> <body> </body> <script> var mm=10.4; document.write("old: "+mm+"<br/>");//10.4 document.write("ceil: "+Math.ceil(mm)+"<br/>"); //11 document.write("floor: "+Math.floor(mm)+"<br/>");//10 document.write("round: "+Math.round(mm));//10 //random() document.write("<hr/>"); document.write(Math.random()); //得到0-9的随机数 document.write("<hr/>"); document.write("0-9的随机数: "+Math.floor(Math.random()*10)); </script> </html>

    十六  JS的全局函数

               什么是全局函数?                      不属于任何一个对象,直接使用名称使用                 eval():执行js代码(如果字符串是一个js代码,使用方法直接执行)                  encodeURI():表示对字符进行编码                 decodeURI();对字符进行解码                 encodeURIComponent();                 decodeURIComponent():                 isNaN():返回true和false(不是数字返回true,是数字返回false)                 parseInt():类型转换

    <html> <head> <title>js的全局函数</title> </head> <body> </body> <script> //eval() var str="alert('eval方法');"; eval(str); //encodeURI() document.write("<hr/>"); var str1="测试中文aaaa123"; //中文编码 var encode1=encodeURI(str1); document.write("编码: "+encode1); //decode() document.write("<hr/>"); document.write("解码: "+decodeURI(encode1)); //isNaN() document.write("<hr/>"); var str2="123"; document.write("isNaN: "+isNaN(str2)+"<br/>"); var str3="abcd"; document.write("isNaN: "+isNaN(str3)); //parseInt(): document.write("<hr/>"); var str4="123"; document.write("以字符串相加的形式: "+str4+1+"<br/>"+"类型转换后: "); document.write(parseInt(str4)+1); </script> </html>

    十七  JS的函数重载

               js的重载是否存在,不存在                     调用最后一个方法                     把传递的参数保存到arguments里            面试:js里面是否存在重载?                     1 JS里面不存在重载                     2 但是可以通过其他方法模拟重载的效果:arguments

    <html> <head> <title>js的函数重载</title> </head> <body> </body> <script> /*function add1(a,b){ //alert("length: "+arguments.length); for(var i=0;i<arguments.length;i++){ alert("value: "+arguments[i]); } return a+b; }*/ function add1(){ if(arguments.length==2){ return arguments[0]+arguments[1]; }else if(arguments.length==3){ return arguments[0]+arguments[1]+arguments[2]; }else if(arguments.length==4){ return arguments[0]+arguments[1]+arguments[2]+arguments[3]; }else{ return 0; } } //调用 document.write("两个参数结果为:"+add1(1,2)+"<br/>"); document.write("三个参数结果为:"+add1(1,2,3)+"<br/>"); document.write("四个参数结果为:"+add1(1,2,3,4)+"<br/>"); document.write("五个参数"+add1(1,2,3,4,5)); </script> </html>

    十八  JS的bom对象

              bom:broswer object model:浏览器对象模型                  有哪些对象                     navigator:获取客户机(浏览器)的信息                     navigator.appName:浏览器的名称                     screen:获取屏幕信息                    location:请求的URL地址                    href: 获取请求的URL地址                    设置URL地址:页面上设置一个按钮,按钮上绑定一个时间,当我点击这个按钮,页面可以跳转到另外的压面                    history:请求的url的历史记录                    history.back():上一个页面                    history.forward():下一个页面                    history.go():传-1到上一个页面,传1到下一个页面                    window:表示一个窗口对象                            顶层对象(所有的bom对象都是在window里面操作的)                       方法:                          alert():页面弹出提示框                          confirm():确认提示框,可传一个参数:显示的内容                          prompt():输入对话框,可传两个参数:显示的内容和输入框里面的默认值                          open():打开一个新的窗口,可传多个参数,                                  第一个:打开新窗口的URL地址                                  第二个:空                                  第三个:窗口特征:高;宽                         close():关闭窗口(浏览器兼容性比较差)                         做定时器:                         setInterval("js代码",毫秒数):                                  window.setInterval("alert('123');",300);//代表每三秒执行一次alert                        setTimeout("js代码",毫秒数):表示在毫秒数之后执行,但是只会执行一次                                 window.setTimeout("alert('在3秒后执行');",3000);                        clearInterval():表示清除通过setInterval设置的定时器                        clearTimeout():清除setTimeout设置的定时器                       参数为setInterval何setTimeout返回的值:                                 var id1=setInterval("alert('23');",3000);                                 clearInterval(id1);

    <html> <head> <title>js的bom对象 </title> </head> <body> <input type="button" value="跳转" οnclick="href1()"/> <hr/> <input type="button" value="open" οnclick="open1()"/> <hr/> </body> <script> document.write("navigator的用法: "+navigator.appName); document.write("<hr/>"); document.write("screen的用法: "+"<br/>屏幕的宽:"+screen.width+" 屏幕的高:"+screen.height); document.write("<hr/>"); document.write("location的用法:<br/>当前的URL地址"+location.href); //href设置URL地址 function href1(){ //document.write("使用跳转按钮进入的页面"); location.href="hello.html"; } document.write("<hr/>"); //confirm() var flag=confirm("confirm提示框"); document.write("confirm有返回值:"+flag); document.write("<hr/>"); //prompt() var pro = prompt("prompt输入框:请输入","0"); document.write("prompt输入框输入的内容:"+pro); document.write("<hr/>"); //open() function open1(){ window.open("hello.html","","width=200,height=100"); } </script> </html>

    十九  JS的dom对象

              dom:document object model:文档对象模型                       文档:超文本文档(超文本标记文档)-html;xml

                          对象:提供了属性和方法                       模型: 使用属性和方法操作超文本标记文档                       可以使用js里面的DOM里面提供的对象,使用这些属性和方法,对标记型文档进行操作                       想要对标记型文档进行操作,首先需要 对标记型文档里面的所有内容封装成对象                       需要把HTML里面的标签,属性,文本内容都封装成对象                              要想对标记型文档进行操作,解析标记型文档                     如何使用DOM解析HTML                      解析过程:                           根据HTML的层级结构,在内存中分配一个树形结构,需要把HTML中的每部分封装成对象                           document对象:整个文档                           element对象:标签对象                           属性对象                           文本对象                            Node节点对象:这个对象是这些对象的父对象                                     如果在对象里面找不到想要的方法,这个时候到Node去找

    二十  DHTML的简介

                DHTML:不是一种语言,是很多技术的简称(HTML CSS DOM JavaScript)                    HTML:封装数据                    CSS:使用属性和属性值设置样式                    DOM:操作HTML文档(标记型文档)                   JavaScript:专门指的是js的语法语句(ECMAScript)

    二十一  document对象

               document对象:表示整个对象                    每个载入的HTML文档都会成为document对象           方法:                 write():向页面输出变量(值);向页面输出HTML代码                 getElementByID():通过id得到元素(标签),传递的参数是标签里面的id的值                       得到属性值:标签对象.属性名称                 getElementsByName():通过name得到元素,返回的是一个集合                 getElementsByTagName():通过标签得到元素

    <html> <head> <title>js的dom对象</title> </head> <body> <input type="text" id="nameid" value="aaaa"/><br/> <input type="text" name="name1" value="ccc"/><br/> <input type="text" name="name1" value="ddd"/><br/> <input type="text" name="name1" value="eeee"/> </body> <script> var input1=document.getElementById("nameid"); document.write("<hr/>"); document.write("通过id获取元素对象:"+input1+"<br/>"); document.write("value的值: "+input1.value+"<br/>") //向input里面设置一个name input1.name="bbbbbb"; document.write("向input标签中设置name值: "+input1.name); document.write("<hr/>"); var inputs = document.getElementsByName("name1"); document.write("通过getElementsByName得到的集合的长度:"+inputs.length+"<br/>"); //遍历数组 for(var i=0;i<inputs.length;i++){//通过遍历数组,得到每个标签里面的具体的值 document.write("输出得到的集合的第"+(i+1)+"个元素:"+inputs[i]+"<br/>"); //每个元素的value值 document.write("输出得到的集合的第"+(i+1)+"个元素:"+inputs[i].value+"<br/>"); } document.write("<hr/>"); var inputss = document.getElementsByTagName("input");//遍历数组 for(var i=0;i<inputss.length;i++){//通过遍历数组,得到每个标签里面的具体的值 document.write("输出得到的集合的第"+(i+1)+"个元素:"+inputss[i]+"<br/>"); //每个元素的value值 document.write("输出得到的集合的第"+(i+1)+"个元素:"+inputss[i].value+"<br/>"); } </script> </html>

    二十二  案例window弹窗案例

              实现过程                 1 创建一个页面                         有两个输入项和一个按钮                         按钮上面有一个事件,弹出一个新窗口 open                 2 创建弹出的页面                         表格                        每一个有一个按钮和编号和姓名                        按钮上有一个事件:把当前的编号和姓名,赋值到第一个页面相应的位置

    open.xml

    <html> <head> <title></title> </head> <body> <table border="1" border-color="red"> <tr> <td>操作</td> <td>编号</td> <td>姓名</td> </tr> <tr> <td><input type="button" value="选择" οnclick="s1('001','张三')"/></td> <td>001</td> <td>张三</td> </tr> <tr> <td><input type="button" value="选择" οnclick="s1('002','赵四')"/></td> <td>002</td> <td>赵四</td> </tr> <tr> <td><input type="button" value="选择" οnclick="s1('003','王五')"/></td> <td>003</td> <td>王五</td> </tr> </table> </body> <script> /* */ function s1(num1,name1){ //需要把num1和name1赋值到window页面 //跨页面的操作 opener:得到创建这个窗口的窗口,得到window页面 var pwin = window.opener; pwin.document.getElementById("numid").value = num1; pwin.document.getElementById("nameid").value = name1; //关闭窗口 window.close(); } </script> </html>

    window.html

    <html> <head> <title></title> </head> <body> 编号:<input type="text" id="numid"/><br/> 编号:<input type="text" id="nameid"/><br/> <input type="button" value="选择" οnclick="open1()"/> </body> <script> //弹出窗口的方法 function open1(){ window.open("open.html","","width=250,height=150"); } </script> </html>

    二十三  window弹窗案例需要注意的地方

               由于我们现在访问的是本地文件,JS安全性,谷歌浏览器安全级别很高,不允许访问本地文件            在实际开发中,没有这样的问题,实际开发中不可能访问本地的文件

    二十四  案例—在末尾添加节点

                 

    <html> <head> <title>在末尾添加节点</title> </head> <body> <ul id="ulid"> <li>1111</li> <li>2222</li> <li>3333</li> <li>4444</li> </ul> <input type="button" value="添加" οnclick="add1();"/> </body> <script> //在末尾添加节点 function add1(){ //获取元素 var ul1 = document.getElementById("ulid"); //创建标签 var li1 = document.createElement("li"); //创建文本 var text1 = document.createTextNode("5555"); //把文本加入到li下面 li1.appendChild(text1); //把li加入到ul下面 ul1.appendChild(li1); } </script> </html>

    二十五  elementt对象

                要操作element对象,首先必须要获取到element                    使用document里面相应的方法获取             方法                    获取属性里面的值:getAttribute()                    可以用户获取getElementById()获取不了的关键字的属性值:class;id                    设置属性的值:setAttribute()                    删除属性:removeAttribute()                   不能删除value

    <html> <head> <title>element对象</title> </head> <body> <input type="text" id="inputid" value="aaaa"/> <hr/> </body> <script> var input1=document.getElementById("inputid"); document.write("用getAttribute获取value值"+input1.getAttribute("value")); input1.setAttribute("class","haha"); document.write("<hr/>"); document.write("用setAttribute设置之后的值"+input1.getAttribute("class")); </script> </html>         想要获取标签下面的子标签       使用属性 childNodes,但是这个属性的兼容性太差

          获得标签下面的子标签的唯一有效办法,使用getElementsByTagName方法

    <html> <head></head> <body> <ul id="ulid"> <li>aaaaa</li> <li>bbbbb</li> <li>ccccc</li> </ul> </body> <script> //获取到ul下面的所有子标签(子元素) //获取ul标签 var ul1 = document.getElementById("ulid"); //获取ul下面的子标签 var lis = ul1.childNodes;//兼容性很差 document.write(lis.length+"<br/>");//ie为3,谷歌火狐为7 var lis1 = ul1.getElementsByTagName("li"); document.write("用getElementsByTagName方法:"+lis1.length); </script> </html>

    二十六  Node对象的属性

            nodeName         nodeType         nodeValue         使用dom解析html时候,需要html里面的标签,属性和文本都封装成对象         标签结点对应的值

                       nodeName:1                    nodeType:大写标签名称 比如SPAN                    nodeValue:null          属性节点对应的值                   nodeName:2                   nodeType:属性名称                   nodeValue:属性的值         文本节点对应的值                   nodeName:3                   nodeType:#text                   nodeValue:文本内容

    <html> <head></head> <body> <span id="spanid">哈哈哈哈哈</span> <hr/> </body> <script> //获取标签对象 var span1 = document.getElementById("spanid"); document.write(span1.nodeType+"<br/>");//1 document.write(span1.nodeName+"<br/>");//SPAN document.write(span1.nodeValue+"<hr/>");//null //属性 var id1 = span1.getAttributeNode("id"); document.write(id1.nodeType+"<br/>");//2 document.write(id1.nodeName+"<br/>");//id document.write(id1.nodeValue+"<hr/>");//spanid //文本 var text1 = span1.firstChild; document.write(text1.nodeType+"<br/>");//3 document.write(text1.nodeName+"<br/>");//#text document.write(text1.nodeValue+"<hr/>");//哈哈哈哈哈 </script> </html>

    <html> <head></head> <body> <ul id="ulid"> <li id="li1">qqqqq</li> <li id="li2">ppppp</li> <li id="li3">wwwww</li> <li id="li4">mmmmm</li> </ul> <hr/> </body> <script> /* 父节点: ul是li的父节点 parentNode 子节点 li是ul的子节点 childNodes:得到所有的子节点,但是兼容性很差 firstChild:获得第一个子节点 lastChild:获得最后一个子节点 同辈节点 li之间关系是同辈节点 */ var li1 = document.getElementById("li1"); var ul1 = li1.parentNode; document.write("获取父节点ul的id:"+ul1.id); document.write("<hr/>"); //获取ul的第一个子节点 var ul11 = document.getElementById("ulid"); var li11 = ul11.firstChild; document.write("使用firstChild得到第一个子节点:"+li11.id+"<br/>"); var li14 = ul11.lastChild; document.write("使用lastChild得到最后一个子节点:"+li14.id+"<hr/>"); //获得兄弟节点 var li3 = document.getElementById("li3"); document.write("获得li3的下一个兄弟节点:"+li3.nextSibling.id+"<br/>"); document.write("获得li3的上一个兄弟节点:"+li3.previousSibling.id); </script> </html>

    二十七  操作DOM树

               appendChild方法 添加子节点到末尾 特点:类似于剪切的效果 insertBefore()方法 在某个节点之前插入一个新的节点 两个参数: newNode:要插入的节点 oldNode:在谁之前插入

             removeChild:删除节点          replaceChild:替换节点          cloneNode(boolean):复制节点

    <html> <head> <style type="text/css"> #div1{ width:200px; height:150px; border:2px solid red; } #div2{ width:250px; height:150px; border:5px dashed green; ` } </style> </head> <body> <div id="div1"> <ul id="ulid1"> <li id="li11">lily</li> <li id="li12">mary</li> <li id="li13">jack</li> </ul> </div> <div id="div2"> </div> <input type="button" value="add" οnclick="add1();" /> <input type="button" value="insert" οnclick="insert1();"/> <input type="button" value="remove" οnclick="remove1();"/> <input type="button" value="replace" οnclick="replace1();"/> <input type="button" value="copy" οnclick="copy1();"/> </body> <script> function add1(){ //得到div2 var div2 = document.getElementById("div2"); //获取ul var ul1 = document.getElementById("ulid1"); div2.appendChild(ul1); } function insert1(){ //在mary之前添加一个人 /* 1 获取li12标签 2 创建li 3 创建文本 4 把文本添加到li下面 5 获取到ul 6 把li添加到ul下面 */ var li13 = document.getElementById("li12"); var li14 = document.createElement("li"); var text = document.createTextNode("lucy"); li14.appendChild(text); var ul11 = document.getElementById("ulid1"); ul11.insertBefore(li14,li12); } function remove1(){ /* 获取到要删除的节点 获取其父节点 删除 */ var li13 = document.getElementById("li13"); var ul12 = document.getElementById("ulid1"); ul12.removeChild(li13); } function replace1(){ //将lily替换为other /* 1 获取到要替换的liA 2 创建li的标签 3 创建文本 4 把文本添加到li的下面 5 获取父节点ul 6 完成替换 */ var li11 = document.getElementById("li11"); var li111 = document.createElement("li"); var text = document.createTextNode("other"); li111.appendChild(text); var ul13 = document.getElementById("ulid1"); ul13.replaceChild(li111,li11); } function copy1(){ //把ul复制到另一个div上 /* 1 获取到ul 2 执行复制方法 3 把复制之后的内容放到div上面 获取到div appendChild方法 */ var ul14 = document.getElementById("ulid1"); var ulcopy = ul14.cloneNode(true); var div2 = document.getElementById("div2"); div2.appendChild(ulcopy); } </script> </html>

    二十八  innerHTML属性

             这个属性不是dom的组成部分,但是大多数浏览器都支持的属性                第一个作用:获取标签里面的文本内容                第二个作用:向标签里面设置内容(可以是html代码)

    <html> <head> <style type="text/css"> #div11{ width:200px; height:150px; border:2px dashed red; } </style> </head> <body> <span id="sid">哈哈哈哈</span> <div id="div11"> </div> <hr/> </body> <script> var span1 = document.getElementById("sid"); document.write("通过innerHTML获取内容"+span1.innerHTML); document.write("<hr/>"); //向div里面设置内容<h1>AAAAA</h1> var div11 = document.getElementById("div11"); div11.innerHTML = "<h1>AAAAA</h1>" </script> </html>

    二十九  案例—动态显示时间

              得到当前的时间           var date = new Date();          var d1 = date.toLocaleString();         需要让页面每一秒获取时间          setInterval方法        显示到页面上         每一秒向div里面写一次时间         使用innerHTML属性

    <html> <head> <style type="text/css"> #times{ width:200px; height:150px; border:2px dashed red; } </style> </head> <body> <div id="times"> </div> </body> <script> function getD1(){ var date = new Date(); var d1 = date.toLocaleString(); var div1 = document.getElementById("times"); div1.innerHTML = d1; } setInterval("getD1();",1000); </script> </html>

    三十  案例—全选练习

            使用复选框上面一个属性判断是否选中

    checked属性

                checked=true :选中,反之,不选中

             创建一个页面 复选框和按钮 四个复选框表示爱好 还有一个复选框操作,全选和全不选,有一个事件 三个按钮,分别有事件 全选 全不选 反选

    <html> <head> </head> <body> <input type="checkbox" id="boxid" οnclick="selAllNo();"/>全选/全不选<br/> <input type="checkbox" name="love"/>篮球<br/> <input type="checkbox" name="love"/>排球<br/> <input type="checkbox" name="love"/>羽毛球<br> <input type="checkbox" name="love"/>乒乓球<hr/> <input type="button" value="全选" οnclick="selAll();"/> <input type="button" value="全不选" οnclick="selNo();"/> <input type="button" value="反选" οnclick="selOther();"/> </body> <script> function selAll(){ /* 1 获取要操作的复选框 2 返回的是数组 属性 checked判断复选框是否选中 遍历数组,得到每一个复选框checkbox设置其属性checked=true */ var all = document.getElementsByName("love"); for(var i = 0;i<all.length;i++){ var all1 = all[i]; all1.checked = true; } } function selNo(){ var all = document.getElementsByName("love"); for(var i = 0;i<all.length;i++){ var all1 = all[i]; all1.checked = false; } } function selAllNo(){ var check = document.getElementById("boxid"); if(check.checked==true) selAll(); else selNo(); } function selOther(){ var all = document.getElementsByName("love"); for(var i = 0;i<all.length;i++){ var all1 = all[i]; if(all1.checked == false) all1.checked = true; else all1.checked = false; } } </script> </html>

    三十一  案例—下拉列表左右选择

              下拉选择框 创建一个页面 两个下拉选择框 设置属性multiple 四个按钮

    <html> <head> </head> <body> <select id ="s1" multiple="multiple" style="width:100px;height:150px"> <option>11111</option> <option>22222</option> <option>33333</option> <option>44444</option> <option>55555</option> <option>66666</option> </select> <select id ="s2" multiple="multiple" style="width:100px;height:150px"> <option>AAAAA</option> <option>BBBBB</option> <option>CCCCC</option> <option>DDDDD</option> <option>EEEEE</option> <option>FFFFF</option> </select> <hr/> <input type="button" value="选中添加到右边>>" οnclick="selToRight()"/> <input type="button" value="全部添加到右边>>" οnclick="allToRight()"/> <br/> <input type="button" value="选中添加到左边<<" οnclick="selToLeft()"/> <input type="button" value="全部添加到左边<<" οnclick="allToLeft()"/> </body> <script> function selToRight(){ /* 1 获取s1里面的option 2 判断是否被选中 属性 selected 3 如果是选中 4 得到s2 5 appendChild方法 */ var select1 = document.getElementById("s1"); var select2 = document.getElementById("s2"); var options1 = select1.getElementsByTagName("option"); for(var i=0;i<options1.length;i++){ var option1 = options1[i]; if(option1.selected==true){ select2.appendChild(option1); i--; } } } function allToRight(){ var select1 = document.getElementById("s1"); var select2 = document.getElementById("s2"); var options1 = select1.getElementsByTagName("option"); for(var i=0;i<options1.length;i++){ var option1 = options1[i]; select2.appendChild(option1); i--; } } function selToLeft(){ var select1 = document.getElementById("s1"); var select2 = document.getElementById("s2"); var options2 = select2.getElementsByTagName("option"); for(var i=0;i<options2.length;i++){ var option2 = options2[i]; if(option2.selected==true){ select1.appendChild(option2); i--; } } } function allToLeft(){ var select1 = document.getElementById("s1"); var select2 = document.getElementById("s2"); var options2 = select2.getElementsByTagName("option"); for(var i=0;i<options2.length;i++){ var option2 = options2[i]; select1.appendChild(option2); i--; } } </script> </html>

    三十二  案例—省市联动

       

    <html> <head> </head> <body> <select id ="country" οnchange="add1(this.value);"> <option value="0">--请选择--</option> <option value="中国">中国</option> <option value="美国">美国</option> <option value="日本">日本</option> </select> <select id ="city" > </select> </body> <script> //创建一个数组存储数据 var arr = new Array(3); arr[0]=["中国","北京","吉林","哈尔滨","辽宁"]; arr[1]=["美国","华盛顿","底特律","休斯顿","纽约"]; arr[2]=["日本","东京","北海道","大阪","广岛"]; function add1(val){ /* 1 遍历二维数组 2 得到也是一个数组 3 拿到的数组中的第一个值和传递过来的值作比较 4 如果相同,获得到第一个值后面的元素 5 得到city的select 6 添加过去,appendChild方法 创建option 由于每次都要向city里面添加option 第二次添加,会追加 每次添加之前,判断一下city里面是否有option,如果有,删除 */ var city = document.getElementById("city"); var options = city.getElementsByTagName("option"); for(var m=0;m<options.length;m++){ var op = options[m]; city.removeChild(op); m-- } for(var i=0;i<arr.length;i++){ var arr1 = arr[i]; var firstvalue = arr1[0]; if(firstvalue == val){ for(var j=1;j<arr1.length;j++){ var value1=arr1[j]; var option1 = document.createElement("option"); var text1 = document.createTextNode(value1); option1.appendChild(text1); city.appendChild(option1); } } } } </script> </html>

    三十三  案例—动态生成表格

            

    <html> <head> </head> <body> 行: <input type="text" id="row"> 列: <input type="text" id="col"> <br/> <input type="button" value="生成" οnclick="make();"> <hr/> <div id="divv"> </div> </body> <script> function make(){ /* 1 得到输入的行和列的值 2 生成表格 循环行 在行里面循环单元格 3 显示到页面上 */ var rows = document.getElementById("row").value; var cols = document.getElementById("col").value; var tab = "<table border='1' bordercolor='red'>"; for(var i=1;i<=rows;i++){ tab +="<tr>"; for(var j=1;j<=cols;j++){ tab +="<td>aaaaa</td>"; } tab +="</tr>"; } tab +="</table>"; var divv = document.getElementById("divv"); divv.innerHTML=tab; } </script> </html>

      
    转载请注明原文地址: https://ju.6miu.com/read-10340.html

    最新回复(0)