zoukankan      html  css  js  c++  java
  • Day5-JS-添加和移除元素(节点)

    一、创建新的 HTML 元素 (节点) - appendChild()

    要创建新的 HTML 元素 (节点)需要先创建一个元素,然后在已存在的元素中添加它。

    ①实例(下面的例子就是新创了一个p标签,然后在已有的div元素里面添加它)

    ----------------appendChild()这个原理其实就是,开始的适合新创了一个p元素,然后把node添加到了这个已有的p元素中

          同理的后面把新创的element也加入到了已有的div元素中的。

    ②效果图:

      <div id="div1">
            <p id="p1">这是一个段落。</p>
            <p id="p2">这是另外一个段落。</p>
        </div>
    
        <script>
            var para=document.createElement("p");
            var node=document.createTextNode("这是一个新的段落.");
            para.appendChild(node);
    
            var element=document.getElementById("div1");
            element.appendChild(para);
        </script>

    二、创建新的 HTML 元素 (节点) - insertBefore()

    (这个insertBefore和上面的appendChild的不同就在于,把这个元素添加到已有标签的哪个位置,

    insertBefore顾名思义就是放在这个标签的最前面,上面的就是放在最后面的

    ①效果图:

    ②知识点:1、开始的时候通过appendChild新建了一个带文本的p

         2、创立了一个代表div1和p1的元素,然后通过insertBefore 让这个p标签在已有的标签前面

    ③代码实现:

    <div id="div1">
        <p id="p1">这是一个段落。</p>
        <p id="p2">这是另外一个段落。</p>
     </div>
    
     <script>
         var para=document.createElement("p");
         var node=document.createTextNode("这是新的段落");
         para.appendChild(node);
    
         var element=document.getElementById("div1");
         var child=document.getElementById("p1");
         element.insertBefore(para,child);
     </script>

    三、移除已存在的元素

    要移除一个元素,你需要知道该元素的父元素。

    ----就是找到它的父亲,然后在父亲的基础上使用removeChild即可

    <div id="div1">
            <p id="p1">这是一个段落。</p>
            <p id="p2">这是另外一个段落。</p>
        </div>
        <script>
            var parent=document.getElementById("div1");
            var child=document.getElementById("p1");
            parent.removeChild(child);
        </script>  

    ===但是其实可以不用搞那个var parent可以直接这样找它的父亲的

    var child = document.getElementById("p1");
    child.parentNode.removeChild(child);

    四、替换 HTML 元素 - replaceChild()

    效果图:

       <div id="div1">
            <p id="p1">这是一个段落。</p>
            <p id="p2">这是另外一个段落。</p>
        </div>
    
        <script>
            var para=document.createElement("p");
            var node=document.createTextNode("这是一个新段落");
            para.appendChild(node);
    
            var parent=document.getElementById("div1");
            var child=document.getElementById("p1");
            parent.replaceChild(para,child);
        </script>

    五、 DOM 集合的使用

    HTMLCollection 对象

    getElementsByTagName() 方法返回 HTMLCollection 对象。

    HTMLCollection 对象类似包含 HTML 元素的一个数组

    1、实例:以下代码获取文档所有的 <p> 元素
    (注意:getElementsByTagName()-----Elements 它后面的s不要忘记了)

    ===并且要注意了得到的HTMLCollection数组是从下标为0开始的

        <h2>JavaScript HTML DOM</h2>
    
    <p>Hello World!</p>
    
    <p>Hello Runoob!</p>
    
    <p id="demo"></p>
    
    <script>
        var myCollection =document.getElementsByTagName("p");
        document.getElementById("demo").innerHTML="第二段的内容为<span style='color:Red;'>"+myCollection[1].innerHTML+'</span>';
    </script>

    2、HTMLCollection 对象 length 属性

    var myCollection = document.getElementsByTagName("p");
    document.getElementById("demo").innerHTML = myCollection.length;

    ====集合 length 属性常用于遍历集合中的元素

    下面的实例是修改所有 <p> 元素的背景颜色

        <h2>JavaScript HTML DOM</h2>
    
    <p>Hello World!</p>
    
    <p>Hello Runoob!</p>
    
    <p>点击按钮修改 p 元素的背景颜色。</p>
    
    <button onclick="myFunction()">点我</button>
    <script>
        function myFunction(){
            var myCollection=document.getElementsByTagName("p");
            var i;
            for(i=0;i<myCollection.length;i++){
                myCollection[i].style.color="red";
            }
        }
    </script>

    注意:HTMLCollection可以用索引来获取元素,但是它不是一个数组,自然不可以使用数组的方法valueOf(), pop(), push(), 或 join() 

    还有一个和HTMLCollection相似的叫做NodeList,只是一些查找元素的方法,返回的元素数组是HTMLCollection但是一些返回的是NodeList类型的

    (一些旧版本浏览器中的方法(如:getElementsByClassName())返回的是 NodeList 对象,而不是 HTMLCollection 对象。

    所有浏览器的 childNodes 属性返回的是 NodeList 对象。

    大部分浏览器的 querySelectorAll() 返回 NodeList 对象。)

    (菜鸟教程中的评论)

  • 相关阅读:
    计算机硕士工资一览表 08年最新各大IT公司薪水行
    VS2010单元测试
    windows操作系统的快捷键
    关于
    [美国代购] Nexus 6 与 Moto X 询价聊天记录整理
    nginxのerror_logはformat指定できない.
    Give $20/month and provide 480 hours of free education
    如何才可能将一件事情做到最高的效率
    Palindrome Number
    Reverse Integer
  • 原文地址:https://www.cnblogs.com/SCAU-gogocj/p/13139629.html
Copyright © 2011-2022 走看看