loading...

DOM的艺术

DOM中的"D"

DOM中的"D"

DOM是“Document Object Model”(文档对象模型)的首字母缩写。如果没有document(文档),DOM也就无从谈起。 当创建了一个网页并把它加载到web浏览器中,DOM就在幕后悄然而生。 它将根据你编写的网页文档创建一个文档对象。

DOM中的"O"

DOM中的"O"

"对象"是一种独立的数据集合。与某个特定对象相关联的变量被称为这个对象的属性; 可以通过某个特定对象去调用的函数被称为这个对象的方法。 对象可以分为三种: 用户定义对象(user-defined object): 由程序员自行创建的对象。 内建对象(native object): 内建在JavaScript语言里的对象,如ArrayMath和Date等。 宿主对象(host object): 由浏览器提供的对象。 在JavaScript语言的发展初期,程序员在编写JavaScript脚本时经常需要用到一些非常重要的宿主对象,它们当中最基础的是window对象。

DOM中的"M"

DOM中的"M"

DOM中的"M"代表着"Model"(模型),但说它代表着"Map"(地图)也未尝不可。模型也好,地图也罢,它们的含义都是某种事物的表现形式。 就像一个模型火车代表着一列真正的火车、一张城市街道图代表着一个实际存在的城市那样, DOM 代表着被加载到浏览器窗口里的当前网页: 浏览器向我们提供了当前网页的地图(或者说模型),而我们可以通过JavaScript去读取这张地图。

常见的方法(1)

getElementById方法

这个方法将返回一个与那个有给定id属性值的元素节点相对应的对象。 这个方法是与document对象相关联的函数。在脚本代码里,函数名的后面必须跟一组圆括号,包含函数的参数。 在这里只有一个参数就是:你要获得的元素的id属性值,这个id属性值必须放在

单引号或双引号

中。 document.getElementById("purchases"); 将返回一个对象,这个对象对应着document对象里的一个独一无二的元素,那个元素的id属性就是上面的purchases。

以下为示例部分

<p title="a gentle reminder">Don't forget to buy this stuff.</p>
    <ul id="purchases">
        <li>A tin of beans</li>
        <li>Cheese</li>
        <li>Milk</li>
    </ul>
    <script type="text/javascript">
        console.log(typeof document.getElementById("purchases"));//获取所要元素的id并对其作出修改
    </script>

 

常见的方法(2)

getElementsByTagName方法

它与getElementById有很多相同之处,但值得注意的是getElementsByTagName返回的是一个对象数组,每个对象分别对应着文档里有着给定标签的元素。

下面示例中 .length属性可以查出这个数组里元素的个数。

 

以下为示例部分

<div id="div1">div12</div>
    <ul class="ul">
        <li>1111</li>
        <li>1111</li>
        <li>1111</li>
        <li>1111</li>
    </ul>
    <script>
        console.log(document.getElementsByTagName("li").length);
    </script>

 

常见的方法(3)

getAttribute方法

之前我们学到了两种,查找元素节点的方法:一种是getElementById,另一种是getElementsByTagName。 现在我们可以利用getAttribute()方法来把各种属性的值查出来。 在下面if(something)与if(something !=null)是等价的

以下为示例

<p title="a gentle reminder">Don't forget to buy this stuff.</p>
    <ul id="purchases">
        <li>A tin of beans</li>
        <li>Cheese</li>
        <li>Milk</li>
    </ul>
    <script>
        /* 假如这份文档还有一个或更多个不带 title 属性的<p>元索,则相应的 getAttribute("title")调用将返回null。
            null 是JavaScript 语言中的空值,具含义是 “你说的这个东西不存在”。 */
        /* var paras = document.getElementsByTagName("p");
        for(var i =0; i<paras.length; i++){
            alert(paras[i].getAttribute("title"));
           
        } */

        //修改脚本,使得只有存在title时弹出
        var paras = document.getElementsByTagName("p");
        for(var i=0;i<paras.length;i++){
            var text_title = paras[i].getAttribute("title");
            if(text_title){
                alert(text_title);
            }
        }
    </script>

 

常用的方法(4)

setAttribute方法

类似于getAttribute()方法, setAttribute()方法也是一个只能通过元素节点对象调用的函数, 但 setAttribute()方法需要我们向它传递两个参数: object.setAttribute(attribute,value)

这里有一个非常值得关注的细节:通过setAttribute()方法对文档做出的修改,将使得文档在浏览器窗口里的显示效果和I或行为动作发生相应的变化, 但我们在通过浏览器的 view source (查看源代码)选项去查春文档的源代码时吾到的仍将是原来的属性值—— 也就是说,setAttribute()方法做出的修改不会反映在文档本身的源代码里。

以下为示例

<p title="a gentle reminder">Don't forget to buy this stuff.</p>
    <ul id="purchases">
        <li>A tin of beans</li>
        <li>Cheese</li>
        <li>Milk</li>
    </ul>
    <script>
        var shopping = document.getElementById("purchases");
        alert(shopping.getAttribute("title"));
        shopping.setAttribute("title","a list of goods");
        alert(shopping.getAttribute("title"));
    </script>

 

posted @ 2020-03-23 17:21  glacierforever  阅读(143)  评论(0编辑  收藏  举报