zoukankan      html  css  js  c++  java
  • 【JS】05 DOM 文档对象模型 P2 元素的CRUD、Dom集合对象

    Element & Node 元素,或者称为节点

    在JS中创建一个HTML元素,但是因为没有指定在Dom对象中的节点位置,所以页面不会发生改变

    var para = document.createElement("p");

    在JS中创建一个HTML的文本节点,似乎在JS中文本也被Dom对象描述成了一个对象节点

    var node = document.createTextNode("这是一个新的段落。");

    把这个文本节点对象装入上面的元素对象

    para.appendChild(node);

    如果要显示这个在JS中创建的元素,就需要从已存在的元素中装入

    首先,需要查找到存在HTML元素

    var element = document.getElementById("div1");

    然后再装入

    element.appendChild(para);

    appendChild()方法

    字面意思上:追加子元素

    追加,是再原有的基础上,在后面添加

    子元素,是表示当前元素的下一级元素,这种关系非常像生活中的父子关系,所以就采用子元素这一称呼

    insertBefore()方法

    与追加子元素相反,该方法则是在最前面添加子元素

    removeChild()方法

    移除一个子元素,也就是说,如果你需要删除一个元素,那么

    你需要先找到他的父元素。听起来挺怪的

    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>

    这个JS片段是想把js中创建的一个p元素,替换掉已经存在的id为p1的p标签

    DOM 集合(Collection)

    我更愿意称为dom数组,因为结构相似

    getElementsByTagName() 方法返回 HTMLCollection 对象。

    例如,一个dom对象,可能具备多个同名的标签元素,所以JS会找到这些元素,并统一装进这个集合对象中

    我们可以通过索引的位置来获取

    Length属性

    和Java一样,表示了这个集合中的元素个数

    可以使用遍历对所有这个同名标签元素进行样式上的修改

    var myCollection = document.getElementsByTagName("p");
    var i;
    for (i = 0; i < myCollection.length; i++) {
        myCollection[i].style.backgroundColor = "red";
    }

    我想说,这用CSS标签选择器不好吗?

    但是这个遍历可以不完全修改【就是选择一部分修改】,在这点上CSS的标签选择器要部分不选择可就太难了

    但是这操作跟数组没有区别啊。。。只不过Java的数组要求长度是固定且数据类型一致的

    DOM 节点列表

    NodeList 对象是一个从文档中获取的节点列表 (集合) 。

    NodeList 对象类似 HTMLCollection 对象。【那是不是就是一样的呢?】

    var myNodeList = document.querySelectorAll("p");

    NodeList 中的元素可以通过索引(以 0 为起始位置)来访问。

    访问第二个 <p> 元素可以是以下代码:

    y = myNodeList[1];

    这个看起来没有什么区别啊,都可以索引获取

    HTMLCollection 与 NodeList 的区别 ?

    HTMLCollection 是 HTML 元素的集合。

    NodeList 是一个文档节点的集合。

    NodeList 与 HTMLCollection 有很多类似的地方。

    NodeList 与 HTMLCollection 都与数组对象有点类似,可以使用索引 (0, 1, 2, 3, 4, ...) 来获取元素。

    NodeList 与 HTMLCollection 都有 length 属性。

    HTMLCollection 元素可以通过 name,id 或索引来获取

    NodeList 只能通过索引来获取

    只有 NodeList 对象有包含属性节点和文本节点。

  • 相关阅读:
    HDU 4472 Count DP题
    HDU 1878 欧拉回路 图论
    CSUST 1503 ZZ买衣服
    HDU 2085 核反应堆
    HDU 1029 Ignatius and the Princess IV
    UVa 11462 Age Sort
    UVa 11384
    UVa 11210
    LA 3401
    解决学一会儿累了的问题
  • 原文地址:https://www.cnblogs.com/mindzone/p/13125896.html
Copyright © 2011-2022 走看看