第三 JS和DOM技术

JS和DOM技术

任务

1、JS全局函数

2、DOM对象介绍

3、BOM对象介绍

4、JS中的事件

5、document对象

5、JS和DOM练习

课堂笔记

css的选择器:

1、标签名选择器

2、id选择器

3、class选择器

4、组合选择器

5、关联选择器(派生选择器)

6、伪元素选择器

 

JavaScript技术:

注释:

关键字、标识符

常量、变量

运算符(算术运算、赋值运算、比较运算、逻辑运算、位运算、三目运算)

语句(判断结构、分支结构、循环结构)

函数(三种定义方式:function定义,Function定义,匿名函数)

数组(2种定义方式)

1、JS中的全局函数

全局函数:JS中提供部分的函数,不需要任何对象,可以直接通过函数名在代码使用。

 

URL:统一资源定位符

浏览器地址栏中输入的信息

http://www.itheima.com:80/index.jsp?name=zhangsan&password=123

 

URI:统一资源标识符

URI表示的资源数据不具体  index.jsp 称为一个URI

 

    <scripttype="text/javascript">

        /*

            encodeURI() 对url中的数据进行编码

            decodeURI() 对编码后的url进行解码

           

            parseInt() 把一个字符串解析成整数

            parseFloat() 把一个字符串解析成小数

           

            eval() 可以把一个字符串解析成JS代码,并让解析后的js代码运行

        */

        var str ="http://www.itheima.com:80?username=张三&age=23";

       

        varen_str = encodeURI(str);

        document.write(en_str +"<br/>");

       

        varde_str = decodeURI(en_str);

   

        document.write(de_str +"<br/>");

       

        varss ="alert('abc')";

        //alert(ss);

        eval(ss);

       

    </script>

 

 

2、BOM对象介绍

BOM:browser object model 浏览器对象模型,把当前的浏览器看成一个对象。

通过浏览器对象可以获取和浏览器相关的所有信息。

2.1、window对象

Window对象有浏览器在加载到body或者frameset标签的时候由JS引擎自动创建。我们在JS代码中可以直接使用,使用window。

 

使用window对象的时候,由于window是JS中最顶层对象,可以省略不写。

 

window对象中的属于:

专门获取window中包含的其他对象:

document  获取浏览器加载的html文件对象

history  获取浏览器中的历史记录对象

location  浏览器的地址栏对象

navigator 浏览器对象

screen     浏览器窗口在显示器屏幕上的相关对象

 

window对象中的方法:

 

    <scripttype="text/javascript">

      /*

           setInterval("函数名",毫秒值)

               在指定的毫秒值之后重复执行当前指定的这个函数

           clearInterval()

               清除重复执行的动作

          

           setTimeout("函数名",毫秒值)

               在制定的毫秒值后只执行一次某个函数

           clearTimeout()

               清除指定的执行动作

              

           open() 打开一个新窗口

           close() 关闭打开的新窗口

       */

      

       var stop;

       window.οnlοad= function(){

           window.status = "我在浏览器的最下面,您能找到吗?";

          

           //需要通过window对象中的setInterval设置重复给页面显示时间

           stop = window.setInterval("showTime()", 1000);

          

       }

       functionshowTime(){

           var date=new Date();

           document.getElementById("time").innerHTML = date.toLocaleString();

       }

      

       function_stop(){

           window.clearInterval(stop);

       }

      

       function_open(){

           window.open("http://www.itheima.com");

       }

      

    </script>

 

  </head>

 

  <body>

    <divid="time">显示时间</div>

    <buttononclick="_stop();">停止</button>

    <buttononclick="_open();">打开</button>

  </body>

 

 

2.2、history对象

 

back返回上一个url地址显示的页面

forward 去下一个url地址显示的页面

go(数字|url) 到指定的页面

2.3、location对象

 

    <scripttype="text/javascript">

       function _demo(){

           location.href = "http://www.itheima.com";

       }

      

       function_demo2(){

           alert(location.href);

       }

    </script>

 

 

2.4、navigator对象

 

    <scripttype="text/javascript">

      /*

           演示Navigator对象

       */

       window.οnlοad= function(){

            var ps =navigator.plugins;   

           for(vari = 0 ; i < ps.length ; i++){

               document.write(ps[i].name+"<br/>");

           }

       }

    </script>

 

 

3、DOM对象

DOM:Document Object Model 文档对象模型。

文档:html文件。但是后期也可能是xml文档

当浏览器把一个html文件加载到内存中,这时就会在内存中得到一个关于当前这个html文件的对象,这个对象就是DOM对象。

 

DOM对象的标准:由W3C指定,它规定如何通过JS技术来解析当前加载的这个html文件中的所有标签,以及标签中的属性,还有标签中封装的文本数据。

 

当我们去解析一个html文件的时候,解析到的标签称为标签对象(元素节点)、标签上的属性称为属性对象(属性节点)、标签中的文本称为文本对象(文本节点)。

4、dom对象中的方法介绍

 

    <scripttype="text/javascript">

        /*

            介绍document对象中的getElementById方法

            getElementById:   是根据页面上的标签的id属性值。获取当前某个标签对象

                当获取到一个html页面中的标签对象之后,当前这个标签对象的具体操作需要查阅DHTML文档

           

            getElementsByName() :根据页面上标签上的name属性的值,获取当前页面上的标签对象

                由于标签的name属性的值可能重复,因此获取到的一个数组

           

            getElementsByTagName():根据标签的名称获取标签对象,由于页面上会出现同名的标签,因此获取到一定也是一个数组

               

        */

        function _getValue(){

           

            var input= document.getElementById("username");

            alert(input.value);

       

        }

        function_getValue2(){

           

            var hobbies= document.getElementsByName("hobby");

            for(vari = 0 ; i < hobbies.length ;i++ ){

                alert(hobbies[i].value);

            }

        }

        function_getValue3(){

            var inputs= document.getElementsByTagName("input");

            for(vari = 0 ; i < inputs.length ;i++ ){

                alert(inputs[i].value);

            }

        }

       

    </script>

  </head>

  <body>

    用户名:<inputtype="password"name="password"id="username"/>

    <buttononclick="_getValue();">获取值</button><br/>

   

    爱好:<inputtype="checkbox"name="hobby"value="Java"/>Java

        <inputtype="checkbox"name="hobby"value="c"/>C

        <inputtype="checkbox"name="hobby"value="c#"/>C#

        <inputtype="checkbox"name="hobby"value="ios"/>IOS

    <buttononclick="_getValue2();">获取值</button><br/>

    <buttononclick="_getValue3();">获取所有input标签</button><br/>

   

  </body>

 

 

5、JS中的事件

事件:它表示的是在页面中用户通过鼠标,键盘等对页面上的标签的操作。任何的操作都会对应一个事件。

我们需要变成JS函数,给不同的事件指定不同的功能。

当页面上发生某个事件之后,需要为这个事件指定它所对应的功能。

 

 

给页面上的标签绑定事件对应的函数的2种方式:

1、直接在页面上的标签上书写事件名称,然后给名称的属性值绑定JS函数名

2、在页面加载完成之后,通过js和dom技术获取到这个标签对象,然后动态给这个标签绑定事件

 

 

    <scripttype="text/javascript">

        //直接在页面上的标签上绑定事件

        function _click(){

            var input= document.getElementById("username");

            if(input.value =="请输入用户名"){

                input.value="";

            }

        }

        //动态的给页面上的标签绑定事件

        //必须在页面架子完成之后绑定事件

        /*

            JS中的正则对象:

                JS中创建正则对象可以直接new,还可以使用/正则表达式/

                varreg = new RegExp("正则表达式");

                varreg2 = /正则表达式/;

               

        */

        window.onload = function(){

            document.getElementById("username").onblur =function(){

                //在事件中可以使用this关键字,this表示的是当前发生事件的哪个标签对象

                var value =this.value;

                varreg =new RegExp("^\\w{6,12}$");

                if( reg.test(value) ){

                    document.getElementById("nameSpan").innerHTML ="用户名正确".fontcolor("green");

                }else{

                    document.getElementById("nameSpan").innerHTML ="用户错误".fontcolor("red");

                }

            }  

        }

    </script>

  </head>

 

  <body>

    用户名:<inputtype="text"id="username"onclick="_click();"value="请输入用户名"/>

    <spanid="nameSpan"></span><br/>

   

  </body>

6、dom练习

6.1、dom中的创建和添加方法

 

    <scripttype="text/javascript">

      

       function demo(){

           //获取页面上的div标签对象

           var div = document.getElementById("div");

           //div.innerHTML= "添加数据";

          //使用dom技术动态先在内存中创建出一个文本对象

           var text = document.createTextNode("数据");

          

           //把文本标签对象条件到div

           div.appendChild(text);

       }

       functiondemo2(){

           var div =document.getElementById("div");

           //div.innerHTML= "<a href='http://www.itheima.com'>黑马</a>";

          //创建a标签对象

           var a = document.createElement("a");//<a></a>

           a.innerHTML = "黑马";//<a>黑马</a>

          //给a标签上添加属性

           a.setAttribute("href","http://www.itheima.com");

           //<ahref='http://www.itheima.com'>黑马</a>

           div.appendChild(a);

       }

   

    </script>

 

 

6.2、dom中的删除、克隆、替换方法

 

    <scripttype="text/javascript">

      //删除页面上的id为two 的 div

       function demo(){

           var two =document.getElementById("two");

           //删除的时候必须获取当前标签的父标签,才能删除自己

           var body = two.parentNode;

           //删除当前div标签对象

          //获取 id为 one的div 使用兄弟标签获取

           var one = two.previousSibling;

           body.removeChild(one);

       }

       //替换

       function demo2(){

           //使用id为one的div替换id为two的div

           var two = document.getElementById("two");

           var one =document.getElementById("one");

           //获取父标签

           var body = two.parentNode;

           body.replaceChild(one, two);

       }

       //克隆替换

       function demo3(){

           //使用id为one的div替换id为two的div

           var two = document.getElementById("two");

           var one =document.getElementById("one");

           //获取父标签

           var body = two.parentNode;

           //克隆出id为one的div标签

           var cloneOne = one.cloneNode(true);

           body.replaceChild(cloneOne, two);

       }

    </script>

 

 

6.3、全选全不选反选

<html>

    <head>

        <title>check.html</title>

        <metahttp-equiv="content-type"content="text/html;charset=UTF-8">

        <scripttype="text/javascript">

            //页面加载完成之后,给页面上的三个按钮绑定单击事件

            window.onload = function(){

               

                document.getElementById("checkall").onclick =function(){

                   

                    //获取页面上的所有checkbox标签

                    varitems =document.getElementsByName("items");

                    for(vari = 0;i < items.length ; i++){

                        items[i].checked = true;

                    }

                }

               

                document.getElementById("checkallNo").onclick =function(){

                   

                    //获取页面上的所有checkbox标签

                    varitems =document.getElementsByName("items");

                    for(vari = 0;i < items.length ; i++){

                        items[i].checked = false;

                    }

                }

                document.getElementById("check_revsern").onclick =function(){

                   

                    //获取页面上的所有checkbox标签

                    varitems = document.getElementsByName("items");

                    for(vari = 0;i < items.length ; i++){

                        /*

                        if(items[i].checked ){

                            items[i].checked = false;

                        }else{

                            items[i].checked = true;

                        }

                       

                        items[i].checked= items[i].checked ? false : true;                     

                        */

                        items[i].checked =!items[i].checked;

                    }

                }

            }

           

            function _check(){

                varc = document.getElementById("check");

                varitems =document.getElementsByName("items");

                    for(vari = 0;i < items.length ; i++){

                        items[i].checked =c.checked;

                    }

            }

           

        </script>

    </head>

<body>

    您的爱好很广泛!!!<br>

    <inputtype="checkbox"id="check"onclick="_check();"/>全选全不选

   

    <inputtype="checkbox"name="items"value="足球"/>足球

    <inputtype="checkbox"name="items"value="篮球"/>篮球

    <inputtype="checkbox"name="items"value="游泳"/>游泳

    <inputtype="checkbox"name="items"value="唱歌"/>唱歌

    <br>

    <inputtype="button"name="checkall"id="checkall"value="全选" />

    <inputtype="button"name="checkall"id="checkallNo"value="全不选"/>

    <inputtype="button"name="checkall"id="check_revsern"value="反选"/>

</body>

 

</html>

 

 

6.4、表格隔行变色

 

    <scripttype="text/javascript">

      /*

           在页面加载完成之后,获取表格的所有tr

           遍历当前所有的tr,判断奇数还是偶数,给奇数和偶数的行添加不同的class属性值

       */

       window.οnlοad= function(){

           var trs =document.getElementsByTagName("tr");

           for(vari = 1 ; i < trs.length ; i++){

               if( i % 2 ){

                   trs[i].className = "one";

               }else{

                   trs[i].className = "two";

               }

               //定义变量记录原来某一行的class属性的值

               var oldClassName ="";

               //给当前遍历的到行动态的添加鼠标悬停和移出事件

               trs[i].οnmοuseοver= function(){

                   oldClassName = this.className;

                   this.className="over";

               }

               trs[i].οnmοuseοut= function(){

                   this.className= oldClassName;

               }

           }

       }

    </script>

 

 

6.5、注册页面

 

 

 

 

 

 

7、JSON格式数据

 

JSON格式的数据主要是在客户端和服务器之间进行数据交互(传输)。

 

服务器把传递给客户端的数据拼接成JSON格式,在客户端就可以直接根据json格式解析数据。

或者是客户端把数据拼接成JSON格式,交给服务器,服务器使用Java代码解析出来。

 

 

JSON格式的数据表现形式:

第一种格式:

{

key:value,

key:value,

key:value

}

JSON格式中的数据的key必须是字符串。value值可以是任意类型的数据

 

第二种格式:

[

{ key:value , key:value },

{ key:value , key:value },

{ key:value , key:value }

]

 

    <scripttype="text/javascript">

   

      /*

           json的第一种格式:

               varjson = {key:value,key:value}

               可以根据指定的json对象,调用它的key,得到对应的value

               调用的方式:

                   格式1:对象.key 获取到key对应的value

                   格式2:对象["key"] 获取到key对应的value

              

               如果要遍历json个数的所有数据,需要使用循环for in循环

       ====================================================

       Java中的foreach遍历容器:

           for( 容器中的数据类型 变量名 : 容器名 ){

               变量空间中保持的是容器中的某个元素数据

           }  

       ====================================================

        JS中的for in格式

            for( var 变量  in数组|对象|json ){

                如果是数组的话,变量是数组的下标

                如果是json个数数据,变量是key值

                如果是对象,变量是对象中的某个属性或者方法名

            }     

      

           var arr = [4,2,7,9,0,11];

           for( var i in arr){

               alert(arr[i]);

           }

       */

       var json = {

                   "name":"林青霞",

                   "age":26,

                   "address":"东莞",

                   "sex":"不详",

                   "student":{

                               "name":"风清扬",

                               "age":32,

                               "address":"西安",

                             }

                   };

       for( var j injson ){

           document.write(j +":"+json[j]+"<br/>");

           for(vari injson[j] ){

               document.write(i+":"+json[j][i]+"<br/>");

           }

       }

      

      

       varjson2 = [

                       {"name":"黑马",

                       "age":"5"}

                   ];

       alert(json2[0].name);

   

    </script>

 

 

 

8、自定义对象

 

    <scripttype="text/javascript">

      //定义对象

       function Person(name ,age){

           this.name= name;

           this.age= age;

           this.getName=function(){

               returnname;

           }

       }

       /*

       varp = new Person();

       p.age= 23;

       p.name= "张三";

      

       p.setName= function( name){

           this.name = name;

       }

       */

      

       var p =new Person("zhangsan",23);

       document.write(p.age+"...."+p.name)

      

       alert(Person);

   

   

   

    </script>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值