美文网首页
【前端】-029-DOM编程-节点操作

【前端】-029-DOM编程-节点操作

作者: 9756a8680596 | 来源:发表于2017-02-15 01:38 被阅读59次

    节点的属性

    属性 说明
    nodeName 返回给的节点的名称;字符串
    nodeType 返回给定节点的类型;整数;1表示html元素,3表示文本字符串
    nodeValue 返回给定节点的当前值;元素节点为null,文本节点为文本字符串

    节点操作

    除了通过DOM树中的父子、兄弟关系获取节点外,还可以通过 JavaScript 中的DOM接口来获取、创建、修改、或删除节点。

    1. 创建节点和插入节点(增)
    • 创建节点:
      var elementNode = document.createElement(tagName)
    • 插入节点:
      • 追加方式插入,在element的子节点队列尾部增加元素aChildaChild需要先被创建),var aChild = element.appendChild(aChild); //返回值为元素追加的元素
      • element的指定子节点前插入节点var achild = element.insertBefore(nodeName, referenceChild); //返回值为插入的元素
    1. 删除节点(删)
      删除element的子节点中指定的child节点,返回删除的节点元素
      var child = element.removeChild(child);

    2. 更新节点内容(改)

      • 修改/获取节点及其后代节点的文本内容
        • element.textContent,获取element元素及其后代节点的文本内容
        • element.textContent = “Tom”,设置element元素的文本内容为Tom
        • ie9以下不兼容,使用element.innerText替代,方法类似。
      • 以HTML的形式修改代码
        • element.innerHTML = "<h1>...</h1>",重新写页面的HTML代码(去除之前添加的<em>事件</em>和<em>样式</em>),仅建议用于新节点创建,且非用户输入,否则会有安全风险,内存泄漏等问题
    3. 获取节点(查)

    • 返回指定 ID 的元素,var element = document.getElementById(ID)
    • 返回指定元素的子节点内元素为tagName的所有元素的数组,var collection = element.getElementsByTagName(tagName),返回值是动态数组,将tagName替换为'*'可以获得指定元素的所有后代元素
    • 返回包指定元素的子节点内类名为className的所有元素的数组,var collection = element.getElementsByClassName(className)
    • 返回指定元素的子节点内选择器为selector的所有元素的数组,var list = element.querySelectorAll(selector) ,list不同于collectionlist为静态的获取时的值,collection是动态变化的
    • 对比:
    方法 只能被document使用 返回值唯一 动态返回值
    getElementById ✔️ ✔️
    getElementsByTagName ✔️
    getElementsByClassName ✔️
    querySelectorAll

    思考题

    1. ie9以下版本不兼容getElementsByClassName()方法,考虑如何兼容?
      节点操作-16:14

    2. element.children能够获取元素的元素子节点,但是低版本的ie不支持,如何在低版本的ie上兼容类似的功能?

    相关文章

      网友评论

          本文标题:【前端】-029-DOM编程-节点操作

          本文链接:https://www.haomeiwen.com/subject/zptgittx.html