zoukankan      html  css  js  c++  java
  • Dom对象

    NodeList

    文档中每个节点都有一个childNodes属性,其中保存着一个NodeList对象,它是一种类数组对象,可以通过位置来访问这些节点,但它不是Array的实例,并且DOM结果的变化能够自动反应在NodeList对象中,所以它是自动变化的。

    <div id="div1" class="triangle">
    
            <p>内部文字1</p>
    
            <p>内部文字2</p>
    
    </div>
    
     
    
    window.onload = function () {
    
                var div = document.getElementById("div1");
    
                var fistChild = div.childNodes[0]; //获取第一个节点
    
                var secondChild = div.childNodes.item(1); //获取第二个节点
    
                var count = div.childNodes.length; //获取节点数,注意只是获取执行的这一时刻。
    
     
    
                var arrayOfNodex = Array.prototype.slice.call(div.childNodes, 0);//将nodeList对象转换为数组
    
                alert(div.firstChild === div.childNodes[0]); //true  lastChild同理
    
                alert(div.nextSibling); //下一个节点
    
                alert(div.previousSibling);//上一个节点
    
            }
    
     

    上述代码的firstChild其实不是第一个P标签的对象,还需注意的是,JS代码需要写在onload方法中,否则会导致页面元素未加载完成就执行JS语句,造成错误。

    这种方法在IE浏览器是没有问题的,但是在谷歌或火狐下可能会把TEXT_NODE类型的节点也获取到,所以可以使用下面的节点避免这种问题。

    var childnodelist = document.getElementById("div1").getElementsByTagName("p");

    appendChild()方法

    在对象末尾处添加一个节点,如果是新的节点那么会加到末尾处,如果添加的节点已经在对象内部了,那么会把该节点移动到对象的最下方。

    window.onload = function () {
    
                var div = document.getElementById("div1");
    
                var fistChild = div.childNodes[0]; //获取第一个节点
    
                alert(fistChild.innerText);//undifend
    
                div.appendChild(fistChild); //已经存在,移动节点
    
                var fistChild1 = div.childNodes[0]; //重新获取节点
    
                alert(fistChild1.innerText);//内部文字1
    
            }
    
     

    insertBefore()方法

    把节点放到childNodes列表中的某个特定位置上,可以使用这个方法,需要两个参数,第一个是要插入的节点,第二个是作为参照的节点,也就是要插入的节点会被插入到参照的节点之前。如果参照的节点为null则插入到最会一个位置,和appendChild方法一样。返回值是新插入的节点对象。

    var returnNode = div.insertBefore(secondChild, fistChild);//插入到第一个节点之前
    
    var returnNode = div.insertBefore(secondChild, div.childNodes.length - 2); //插入到倒数第二个节点之前。

    replcaceChild()方法

    替换节点,同样接收两个参数,要插入的节点,和被替换的节点。返回被替换的节点。

    var returnNode = div.replaceChild(fistChild, secondChild); //把第一个节点替换为第二个节点

    removeChild()方法

    删除某个节点,返回被删除的节点。

    var returnNode = div.removeChild(secondChild); //删除第二个节点

    cloneNode()方法

    创建节点的副本,需要注意的是里面传入参数是个布尔值,为true时,是深度复制,也就是说会复制它的父节点和子节点,传入false时,为浅复制,只复制当前的节点,不会对父节点和子节点进行复制。

        <ul id="ul1">
    
            <li>1</li>
    
            <li>2</li>
    
            <li>3</li>
    
    </ul>
    
     
    
    var ul = document.getElementById("ul1");
    
    var deepList = ul.cloneNode(true); //深度复制
    
    var shallowList = ul.cloneNode(false); //浅复制
    
    alert(deepList.childNodes.length); //3 或 7
    
    alert(shallowList.childNodes.length); //0

    所以上面的代码浅复制的对象子节点的长度会是0。

    Document类型

    var body = document.body; //获取页面body元素
    
    var title = document.title;//获取页面标题
    
    document.title = "新标题"; //为页面设置新的标题
    
    var url = document.URL;//获取当前页面的url
    
    var referrer = document.referrer;//获取来源页面的url
    
    var domain = document.domain; //获取域名 是可设置的 但不能设置为不同的域

    getElementsByTagName方法

    <input type="text" name="t1" value="t1" />
    
        <input type="text" name="t2" value="t2" />
    
        <input type="text" name="t3" value="t3" />
    
    <input type="text" name="t4" value="t4" />
    
     
    
    var text = document.getElementsByTagName("input");
    
    var t1 = text.namedItem("t1");
    
    alert(t1.value);  //t1

    通过namedItem方法,传入标签的name值,获取在HTMLCollection集合中的某项元素。

    也可以通过大括号的方式直接访问某个name的元素,如:

    var text = document.getElementsByTagName("input");
    
    var t1= text["t1"]
    
    alert(t1.value);

    特殊集合

    document.anchors //返回文档中所有带name特性的a元素
    
    document.forms; //返回文档中所有的form元素
    
    document.images //返回文档中所有image元素
    
    document.links;//返回文档中所有带href的a元素

    文档写入

    下面这两个方法会将aa写入到页面中,并且会删除之前页面中的元素。也可在双引号中拼接html代码或js代码。

    document.write("aa");
    
    document.writeln("aa");
  • 相关阅读:
    调接口
    500 Internal Server Error
    htaccess跨域
    Header add Access-Control-Allow-Origin: *
    如何写jquery插件
    笔记
    互联网思维,谁的思维?
    超强js博客值得学习!!!
    学好js的步骤
    NOIP2000 进制转换
  • 原文地址:https://www.cnblogs.com/y8932809/p/5395717.html
Copyright © 2011-2022 走看看