原生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); //
console.log("childNodes.length",oUl1.childNodes.length); //
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;
}
移除节点
removeChild
获取父节点
parentNode:获取父元素
parentNode-原生js仿jquery中的sibling方法
<body>
<ul>
<li id="firstId">
<span>我是文本</span>
</li>
<li></li>
<li></li>
</ul>
</body>
<script type="text/javascript">
window.onload=function(){
var firstId=document.getElementById("firstId");
const elm=mySiblings(firstId);
for (let i = 0; i < elm.length; i++) {
elm[i].style.background="red";
}
} function mySiblings(elm) {
var siblingsNodes = [];
var p = elm.parentNode.children;
for(let i =0,pl= p.length;i<pl;i++) {
if(p[i] !== elm) siblingsNodes.push(p[i]);
}
return siblingsNodes;
}
</script>
插入节点
1.insertBefore
2.appendChild
创建DOM结构
1.创建元素节点 createElement
2.创建文本节点 createTextNode
document.createElement('div')
document.createTextNode('ok')
获取元素的下一个节点(同胞)
nextSibling
获取元素的上一个节点(同胞)
previousSibling
原生JS节点操作的更多相关文章
- JS节点操作(JS原生+JQuery)
JavaScript与JQuery节点操作 节点关系与类型 任何HTML元素,都有nodeType属性.值有1~12,常用的有: 1.元素节点 2.文本节点 8.注释节点 9.document节点 ...
- js节点操作实例
写了一个简单的小例子来引用js实例 1. 初步节点操作: 2.兼容性节点操作: 3.节点的类型,名字: 4.使用setAttribute设置属性 5.节点复制操作: 6.删除和替换节点 如有错误,还望 ...
- 使用原生js来操作对象dom的class属性
之前一直都使用jquery来操作dom,今天想自己用原生写一些插件,却发现给dom增删class的时候,使用slice来截取className特别的麻烦,后来发现,原来原生JS本来就有提供api来对d ...
- js节点操作
在看<javascript高级程序设计>,看到节点操作这一块,觉得我只知道用appendChild(),太肤浅了,记录下学到的东西. 每个节点都有一个 parentNode 属性,该属性指 ...
- 原生JS一些操作
很久没写原生的JS了,上周做了一个小东西让我又重新了解了一下原生JS,以下记录一些常见的原生JS var canvArrow = document.getElementById('js-canv_ar ...
- js原生的节点操作API
// yi获取元素节点 //一 :过id的方式( 通过id查找元素,大小写敏感,如果有多个id只找到第一个) document.getElementById('div1'); // 通过类名查找元素, ...
- JavaScript原生的节点操作
前言:原生是Javascript的基础,还是需要多多重视,时间长都忘记了,现在整理一下. 获取子节点 children 不是标准的dom属性,但是几乎被所有浏览器支持.不包含文本节点. 注意:在IE中 ...
- js 节点操作
添加和删除节点(HTML 元素). 创建新的 HTML 元素 如需向 HTML DOM 添加新元素,您必须首先创建该元素(元素节点),然后向一个已存在的元素追加该元素. 实例 <div id=& ...
- 原生JS数组操作的6个函数 arr.forEach arr.map arr.filter arr.some arr.every arr.findIndex
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
随机推荐
- hadoop和java 配置环境变量的的tar
第一步:打开工具上传tar包 如下图 第二步:在文件路径下查看是否上传成功 第三步:解压tar包 tar -zxvf hadoop.2.6.5.tar.gz 第四步:配置环 ...
- Linux 典型应用之服务管理
crontab 定时任务 用户所建立的crontab文件中,每一行都代表一项任务,每行的每个字段代表一项设置,它的格式共分为六个字段,前五段是时间设定段,第六段是要执行的命令段,格式如下: minut ...
- Python3练习题 021:递归方法求阶乘
利用递归方法求5!. 方法一 f = 1 for i in range(1,6): f = f * i print(f) 方法二 import functools print(functo ...
- iOS 10的两个坑
iOS 10出现白屏幕,其他机型不会. 一个bug 手机连上电脑,在电脑端的Safari里,看到了如下的错误: SyntaxError: Cannot declare a let variable t ...
- JavaScript中的函数和C#中的匿名函数(委托、lambda表达式)
在js中function是一个一个引用类型,所以可以出现这样的代码: 'use strict'; var compare=function(value1, value2) { if (value1&l ...
- [转帖]tar高级教程:增量备份、定时备份、网络备份
tar高级教程:增量备份.定时备份.网络备份 作者: lesca 分类: Tutorials, Ubuntu 发布时间: 2012-03-01 11:42 ė浏览 27,065 次 61条评论 一.概 ...
- spec文件中的 %pre %post %preun %postun
转载http://meinit.nl/rpm-spec-prepostpreunpostun-argument-values RPM has 4 parts where (shell) scripts ...
- Windows 10 & change DNS
Windows 10 & change DNS https://www.windowscentral.com/how-change-your-pcs-dns-settings-windows- ...
- 老男孩python学习自修第十八天【面向对象】
1.类与对象(构造方法与实例化) #!/usr/bin/env python # _*_ coding:UTF-8 _*_ class Province: def __init__(self, nam ...
- Java ME之Android开发从入门到精通
1. 搭建Android开发环境 方式一:使用ADT插件安装 ADT插件的下载与安装,ADT插件获取网址:http://www.androiddevtools.cn/ 下载好的ADT插件如图所示: 在 ...