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 对象。)

(菜鸟教程中的评论)

 

posted @ 2020-06-16 10:33  SCAU-gogocj  阅读(219)  评论(0编辑  收藏  举报