原生JS节点操作

获取子节点

1. children 不是标准的dom属性,但是几乎被所有浏览器支持。获取子元素的元素节点(只包括元素节点)

注意:在IE中,children包含注释节点。

2. childNodes 是标准属性。返回所有子节点。包括文本节点。

注意:

 (1)nodeType   放回节点类型的值,一般是整数

       常用的有: nodeType==1是元素节点(element),2是属性节点(attr),3是文本节点(#text),8是注释节点(#comment),9是文档(document) 。

 (2)nodeName  标签的名称,返回的结果都是大写

 (3)nodeValue  返回value,但是只对文本节点和注释有用,对于标签没有作用。

<ul id="ul1">
    <li>
        <span>我是文本</span>
    </li>
    <li></li>
    <li></li>
</ul>
window.onload=function(){
    var oUl1=document.getElementById("ul1");
    console.log("children.length",oUl1.children.length); // 3
    console.log("childNodes.length",oUl1.childNodes.length); // 7

    for(var i=0; i<oUl1.children.length; i++){
       oUl1.children[i].style.background=‘red‘;
    }
}

childNodes模拟children

function myChildren(ele){
    //获取所有的子元素(包括文本节点、元素节点、注释节点);
    var eleChild = ele.childNodes;
    var str = [];
    //循环所有的文本节点,以便都能拿到;
    for(var i = 0;i<eleChild.length;i++){
        //nodeType == 1 是元素节点(element),2是属性节点(attr),3是文本节点(text),8是注释节点,9是文档(document)。
        if(eleChild[i].nodeType == 1){
            //将得到的每一项子元素添加到数组的后面;
            str.push(eleChild[i]);
        }
    }
    return str;
}

//childNodes模拟children
function myChildren2(ele){
    //获取所有的子元素(包括文本节点、元素节点、注释节点);
    var eleChild = ele.childNodes;
    //循环所有的文本节点,以便都能拿到;
    for(var i = 0;i<eleChild.length;i++){
        //console.log(eleChild[i].nodeName);    //#text  Li
        if(eleChild[i].nodeName == "#text" && !/\S/.test(eleChild[i].nodeValue)) {
            //删除数组中的text
            ele.removeChild(eleChild[i]);
        }
    }
    return eleChild;
}

源码地址:https://github.com/zuobaiquan/javascript/tree/master/%E5%8E%9F%E7%94%9FJS%E8%8A%82%E7%82%B9%E6%93%8D%E4%BD%9C

如果 觉得文章不错,可以请博主喝一杯奶茶哦!!!

原文地址:https://www.cnblogs.com/zuobaiquan01/p/8461362.html

时间: 2024-08-03 07:37:28

原生JS节点操作的相关文章

0417 js节点操作表格(添加、删除)

节点创建和追加 节点创建 元素节点:document.createElement(tag标签名称); 文本节点:document.createTextNode(文本内容); 属性设置:node.setAttribute(名称,值); 节点追加: 父节点.appendChild(子节点); 父节点.insertBefore(newnode,oldnode); //newnode放到oldnode的前边 父节点.replaceChild(newnode,oldnode); //newnode替换到o

js节点操作

节点操作: 一.节点类型 根据DOM,XML文档中的一个成分都是一个节点. 二.节点操作 获取节点引用 1.方式一:   document.getElementById(): document.getElemengtByTagName(): 说明:这种方式直接查找节点,每次都会遍历文档中的所有节点,比较耗费内存,而且并不能体现出节点间的关系: 2.方式二:通过节点关系属性获得节点引用 方法:1.obj.childNodes:获取对象所有子节点,只包含次级节点:(eg:alert(wrap.chi

原生JS一些操作

很久没写原生的JS了,上周做了一个小东西让我又重新了解了一下原生JS,以下记录一些常见的原生JS var canvArrow = document.getElementById('js-canv_arrow'); var body = document.getElementsByTagName('body')[0]; var a = document.getElementById('nav-text'); 1.修改css属性:canvArrow.style.display = "block&qu

js 节点操作

添加和删除节点(HTML 元素). 创建新的 HTML 元素 如需向 HTML DOM 添加新元素,您必须首先创建该元素(元素节点),然后向一个已存在的元素追加该元素. 实例 <div id="div1"> <p id="p1">这是一个段落</p> <p id="p2">这是另一个段落</p> </div> <script> var para=document.

原生JS获取操作元素

操作元素自定义属性 h5方法 设置语法:<p data-自定义属性名 = '自定义属性值'></p> 属性名想叫什么就叫什么,可以用多个 -连接 <p data-名称-名称 = '自定义属性值'></p> 获取语法**:element.dataset.自定义属性名如果属性名用多个-连接 ,获取时应将属性名以-为分割符,驼峰方式获取 无兼容性方法 设置语法**:属性名想叫什么就叫什么,可以用多个 -连接 操作元素所有(标准.自定义)属性 获取元素属性 语法:e

原生JS数组操作的6个函数 arr.forEach arr.map arr.filter arr.some arr.every arr.findIndex

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> </head> <body> </body> <script type="text/javascript"> var arr = [1,2,4,5,3] var arrObj = [{'id':1,'name':

原生JS的使用,包括jquery和原生JS获取节点、jquery和原生JS修改属性的比较

一.前言 相比于JS这条直达终点.满是荆棘的小路,jquery无疑是康庄大道了,足够的简洁.易用给了它辉煌的地位.然而,毕竟是绕着道的插件,当小路走着走着变成大路的时候,曾经的大路也就失去了他自身的优势了. 原生JS虽然没有jquery那么的好用.便捷,或者说没有jquery那样让我们使用的如此顺手,甚至是无法舍弃的依赖.可是我们依然不得不扔掉手中这根陪伴我们多年的拐杖,我们不是瘸子,我们不曾腐朽,我们还可以独立前行. 二.正文 1. jquery和原生JS获取节点的比较 //这是HTML代码,

原生JS的DOM节点操作

DOM(Document Object Model/文档对象模型)是针对HTML和XML文档的一个API.DOM节点树:在文档中出现的空格.回车.标签.注释.文本.doctype.标签等都属于DOM节点. 操作DOM节点的方式无非就是:创建.添加(插入).移除.替换.查找(获取).克隆DOM节点. 创建文本节点:var newText = document.createTextNode('文本节点');创建标签节点:var newNode = document.createElement('di

Java节点操作(JS原生+JQuery)

Java节点操作(JS原生+JQuery) 节点关系与类型 任何HTML元素,都有nodeType属性.值有1~12,常用的有: 1.元素节点 2.文本节点 8.注释节点 9.document节点(HTML文档对象) 10.DTD(文档类型定义) box.nodeType       //返回值1,获得nodeType属性 box.childNodes            //获得全部子元素 //兼容性问题 注意:在chrome,IE9 IE10高版本的浏览器里面的回车都认为是节点,IE6,7