Javascript高级部分【5】

JavaScript中的DOM对象

DOM--Document Object Model[文档对象模型]
当网页被加载时,浏览器会创建页面的文档对象模型。
HTML DOM 模型被构造为对象的树


        javascript不认识html标记,如果我们要想让javascript处理html标记,就得想尽一切办法,把html标记编程javascript对象。

问题:我们要怎么做才能把html标记,变成javascript对象?
答案:我们通过javascript提供的document对象的方法可以将html标记变成 javascript  对象。

一.document对象

    1.javascript提供好的
    2.我们在使用的时候,不需要new/其他方式创建

document对象提供了3个方法将html标记变成javascript对象
       
1.getElementById(id属性值);通过 id 查找 HTML 元素

    <p id="p1">测试getElementById(id属性值);==p1</p>

    <p id="p2">测试getElementById(id属性值);==p2</p>

    <p id="p2">测试getElementById(id属性值);==p3</p>

    <input type="button" value="测试getElementById" οnclick="testdoc1();">

 function testdoc1(){

        // document对象提供了3个方法将html标记变成javascript对象

        //1.getElementById(id属性值);通过 id 查找 HTML 元素

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

            // alert(p1);  //[object HTMLParagraphElement]

            // alert(typeof p1);  //object

        // 如果id属性相同的html元素有多个,getElementById只能得到第一个

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

            // alert(p2);  //[object HTMLParagraphElement]

            // alert(typeof p2);  //object

            // alert(p2.innerText);  //测试getElementById(id属性值);==p2

注意: 如果id属性相同的html元素有多个,getElementById只能得到第一个

2.getElementsByTagName(标签名)通过标签名查找 HTML 元素

    <a href="#">测试getElementByTagName--a1</a> <br>

    <!--a href="#">测试getElementByTagName--a2</a> <br>-->

    <input type="button" value="测试getElementByTagName" οnclick="testdoc1();">

 //2.getElementsByTagName(html标记名称)通过html标记名称查找 HTML元素变成javascript对象

        //TagName--html标记名称

        var aarray=document.getElementsByTagName("a");

        // alert(aarray);  //[object HTMLCollection]

        // alert(aarray.length);  //2

        /*

        for(var i=0;i<aarray.length;i++){

            alert(aarray[i].innerText);

        } //测试getElementByTagName--a1  测试getElementByTagName--a2

        */

        //当html元素的名称只剩一个的时候,getElementByTagName得到还是一个集合对象

        // alert(aarray[0].innerText); //测试getElementByTagName--a1

注意:当html元素的名称值剩一个的时候,getElementsByTagNam得到还是一个集合           对象。

3.getElementsByClassName(class属性值)通过类名找到 HTML 元素

    <input type="button" value="测试getElementByTagName" οnclick="testdoc1();">

    <span class="span1">测试getElementsByClassName--span1</span><br>

    <span class="span2">测试getElementsByClassName--span2</span><br>

    <span class="span2">测试getElementsByClassName--span3</span><br>

    <input type="button" value="测试getElementsByClassName" οnclick="testdoc1();" />

 //3.getElementsByClassName(class属性值)通过html属性值找到 HTML 元素变成javascript对象

        var spanObj=document.getElementsByClassName("span1");

        alert(spanObj); //[object HTMLCollection]

        alert(spanObj[0].innerText); //测试getElementsByClassName--span1

        //getElementsByClassName得到一个集合对象

        总结:getElementById -- 没有“s”得到一个对象

                getElementsByTagName  /  getElementsByClassName --有“s”得到一个集合【数组】

二.通过得到的javascript对象控制html元素

1.JavaScript 能够改变页面中的所有HTML元素的内容

     1)innerHTML 属性

       2)innerText 属性

************************************************************************************************

innerHTML属性与innerText属性的区别?
1.都可以得到得到/修改元素的文本内容
2.innerHTML属性--得到元素的文本内容时,如果有html标记,会得到html标记
                             --修改元素的文本内容时,如果有html标记,会解释运行。
3.innerText属性--得到元素的文本内容时,如果有html标记,不会得到html标记,只会得到标记中的文本内容  
                          --修改元素的文本内容时,如果有html标记,不会解释运行。

**************************************************************************************************************

     3) value属性
                专门用来得到/修改表单元素的文本内容

<!DOCTYPE html>

<head>

    <meta charset="UTF-8">

    <title>Document</title>

    <script>

        function testContext(){

        //1.innerHTML属性--得到/修改元素的文本内容

        //得到:dom对象.innerHTML

        //修改:dom对象.innerHTML=数据值;

        var parray= document.getElementsByTagName("p");

        // alert (parray[0].innerHTML);

        //parray[0].innerHTML="修改p元素的文本内容"

        //如果文本内容中有html标记,html标记会被解释运行

        //parray[0].innerHTML="修改<a href=\'#\'>p元素</a>的文本内容";

        //2.innerText属性--得到/修改元素的文本内容

        //得到:dom对象.innerText

        //修改:dom对象.innerText=数据值;

        var spanArray=document.getElementsByTagName("span");

        //alert(spanArray[0].innerText);  //测试修改span元素的文本内容--innerText属性

        //spanArray[0].innerText="修改span元素的文本内容"

        //如果文本内容中有html标记,html标记不会被解释运行

        //spanArray[0].innerText="修改<a href=\'#\'>span元素</a>的文本内容";

       

        //3.value属性--专门用来得到/修改表单元素的文本内容

        //得到:dom对象.value

        //修改:dom对象.value=数据值;

        var inputobj=document.getElementById("input1");

        alert (inputobj.value);

        inputobj.value="测试修改表单元素值";

        }

    </script>

</head>

<body>

    <p>测试修改p元素的文本内容--innerHTML属性</p>

    <span>测试修改span元素的文本内容--innerText属性</span><br>

    <input id="input1" type="text" value="测试value属性"><br>

    <input type="button" value="测试按钮" οnclick="testContext();">

</body>

</html>

2.JavaScript 能够改变页面中的所有HTML属性

      HTML属性---为当前html标记提供附加信息,出现在html开始标记中。
      得到属性值:   dom对象.具体的html属性名称;
      修改属性值:   dom对象.具体的html属性名称="新的属性值";

<!DOCTYPE html>

<head>

    <meta charset="UTF-8">

    <title>Document</title>

    <script>

        function testAttr(){

            var imgObj=document.getElementById("img1");

            //得到:dom对象.innerText

            alert(imgObj.src);

            //修改:dom对象.innerText=数据值;

            imgObj.src="imgs/defbbbe76e8e27f4aaa78c063c417e2.png"

        }

    </script>

</head>

<body>

    <img id="img1" src="imgs/avatar5.png">

    <input type="button" value="测试控制html的属性" οnclick="testAttr();">

</body>

</html>

3.JavaScript 能够改变页面中的所有 CSS 样式

注意:行内样式---在html开始标记中,用style属性设置的样式
         内部样式块---在html的head标记中用<style>设置的样式
         链入外部样式文件---创建独立的css文件,在html的head标记中用link标记链接

<!DOCTYPE html>

<head>

    <meta charset="UTF-8">

    <title>Document</title>

    <style>

        div{

            width: 300px;

            height: 100px;

            background-color: blueviolet;

        }

    </style>

    <script>

        function testcss(){

        //得到样式值:dom对象.style.具体样式属性;   【行内样式】

            var divarray=document.getElementsByTagName("div");

        //alert(divarray[0].style.width);

        //修改样式值:dom对象.style.具体样式属性=“样式值”; 【行内样式/内部样式块/链入外部样式文件】

            divarray[0].style.width="200px";

            divarray[0].style.height="100px";

            divarray[0].style.backgroundColor="blue";

        }

    </script>

</head>

<body>

    <div style="width: 300px;height: 300px;background-color: red;"></div>

    <input type="button" value="测试样式" οnclick="testcss();">

</body>

</html>

    得到样式值:dom对象.style.具体样式属性;   【行内样式】
    修改样式值:dom对象.style.具体样式属性=“样式值”; 【行内样式/内部样式块/链入外部样式】

4.JavaScript 能够对页面中的所有事件做出反应

   目前我们所接触的事件只有onclick--按钮点击事件,其他的事件还没有接触。
      按钮点击事件为例:
          设置事件:
              1.标记设置事件,<script>中处理事件
              2.<script>中设置+处理事件

<!DOCTYPE html>

<head>

    <meta charset="UTF-8">

    <title>Document</title>

    <script>

        function testClick(){

            alert("测试按钮点击事件1");

        }

        /*

        //当页面被打开的时候,得到按钮的javascript对象

            window.οnlοad=function(){

        //得到按钮的javascript对象

            var butobj= document.getElementById("but1");

        //设置事件处理

            butobj.οnclick=function(){

                alert("测试按钮点击事件2");

            }

        */

       

        function testload(){

        //得到按钮的javascript对象

            var butobj= document.getElementById("but1");

        //设置事件处理

                butobj.οnclick=function(){

                    alert("测试按钮点击事件2");

                }

    }

    </script>

</head>

<body οnlοad="testload();">

    <h1>1.标记设置事件,script中处理事件1</h1>

    <input type="button" value="测试按钮点击事件1" οnclick="testClick();">

     <h1>2.script标记中设置+处理事件</h1>

     <input id="but1" type="button" value="测试按钮点击事件2" >

</body>

</html>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值