chidNodes返回的是node的集合,

每个node都包含有nodeType属性。

nodeType取值:

元素节点:1

属性节点:2

文本节点:3

注释节点:8
 
 
页面上是由无数个节点组成,节点分成元素节点、属性节点、文本节点、注释节点
<table>
     <tr>
          <td>aaa</td>
          <td>bbb</td>
     </tr>
</table>
table与tr、tr与td、td与td之间的换行都属于文本节点,如果获取table的chidNodes,将会获得9个节点,但事实上我们并不希望得到那些换行的空文本节点,td内的aaa仍然是td下的文本节点,要想获得td内的aaa,则需要通过td.chidNodes去获取,解决方法和示例如下:
 <html>
<head>
<title></title>
<script src="../js/jquery-1.12.3.min.js"></script>
</head>
<body>
<table>
<tr>
<td>值1</td>
<td>值2</td>
<td>值3</td>
</tr>
<tr class="for-tr">
<td>aaa</td>
<td>bbb</td>
<td>ccc</td>
</tr>
<tr class="for-tr">
<td>ddd</td>
<td>eee</td>
<td>fff</td>
</tr>
<tr class="for-tr">
<td>ggg</td>
<td>hhh</td>
<td>kkk</td>
</tr>
<tr class="for-tr">
<td>lll</td>
<td>ppp</td>
<td>ooo</td>
</tr>
</table>
</body>
<script type="text/javascript">
var postArr = [];
for (var i = 0; i < document.getElementsByClassName('for-tr').length; i++) {//循环所有的tr
var subObj = {};
console.log(document.getElementsByClassName('for-tr')[i].childNodes);
// var subChild = delSpaceDom(document.getElementsByClassName('for-tr')[i]);
// subObj.name = subChild[0].childNodes[0].nodeValue;
// subObj.age = subChild[1].childNodes[0].nodeValue;
// subObj.sex = subChild[2].childNodes[0].nodeValue;
postArr.push(subObj);
};
console.log(postArr);
</script>
</html>

没有过滤掉空文本节点之前

打印出每个for-tr下的子元素节点,有七个节点,如图:

移除空文本节点之后的代码如下:

<html>
<head>
<title></title>
</head>
<body>
<table>
<tr>
<td>值1</td>
<td>值2</td>
<td>值3</td>
</tr>
<tr class="for-tr">
<td>aaa</td>
<td>bbb</td>
<td>ccc</td>
</tr>
<tr class="for-tr">
<td>ddd</td>
<td>eee</td>
<td>fff</td>
</tr>
<tr class="for-tr">
<td>ggg</td>
<td>hhh</td>
<td>kkk</td>
</tr>
<tr class="for-tr">
<td>lll</td>
<td>ppp</td>
<td>ooo</td>
</tr>
</table>
</body>
<script type="text/javascript">
var postArr = [];
for (var i = 0; i < document.getElementsByClassName('for-tr').length; i++) {//循环所有的tr
var subObj = {};
var subChild = delSpaceDom(document.getElementsByClassName('for-tr')[i]);
subObj.name = subChild[0].childNodes[0].nodeValue;
subObj.age = subChild[1].childNodes[0].nodeValue;
subObj.sex = subChild[2].childNodes[0].nodeValue;
postArr.push(subObj);
};
console.log(postArr);
function delSpaceDom(parentNode) {
var sub_child = parentNode.childNodes;
for (var i = 0; i < sub_child.length; i++) {
if(sub_child[i].nodeType == '3' && sub_child[i].nodeName == '#text' && !/\S/.test(sub_child[i].nodeValue)){//文本节点并且是空的文本节点时,将空文本节点删除
parentNode.removeChild(sub_child[i]);
}
}
return parentNode.childNodes;
}
</script>
</html>
运行结果如下:
总结:
页面上是由无数个节点组成,而childNodes是获取到所有的节点,要想得到自己想要的节点,需要经过处理。

javascript获取childNodes详情,删除空节点的更多相关文章

  1. javascript获取dom的下一个节点方法

    需求说明: 获取当前节点左节点或者右节点(兄弟节点): css: <style type="text/css"> a:focus { outline: none; } ...

  2. javascript 获取下一个节点

    下一个节点: nextElementSibling 上一个节点 previousElementSibling <div> <select onchange="alert(t ...

  3. JavaScript获取HTML DOM节点元素详解(转)

    在Web运用程序特别是Web 2.0程序开发中,经常要获取页面中某个元素,然后更新该元素的样式.内容等.如何获取要更新的元素,是首先要处理的疑问. 51CTO推荐阅读:JavaScript DOM文档 ...

  4. [转]Javascript removeChild()删除节点及删除子节点的方法(同样适用于jq)

    Javascript removeChild()删除节点及删除子节点的方法 这篇文章主要介绍了Javascript removeChild()删除节点及删除子节点的方法的相关资料,需要的朋友可以参考下 ...

  5. javascript 获取HTML DOM父、子、临近节点

    在Web应用程序特别是Web2.0程序开发中,经常要获取页面中某个元素,然后更新该元素的样式.内容等.如何获取要更新的元素,是首先要解决的问题.令人欣慰的是,使用JavaScript获取节点的方法有很 ...

  6. html5中JavaScript删除全部节点

    如果div里有这么些内容: <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type ...

  7. javaScript获取文档中所有元素节点的个数

    HTML+JS 代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset=&qu ...

  8. Zookeeper命令行操作(常用命令;客户端连接;查看znode路径;创建节点;获取znode数据,查看节点内容,设置节点内容,删除节点;监听znode事件;telnet连接zookeeper)

    8.1.常用命令 启动ZK服务 bin/zkServer.sh start 查看ZK服务状态 bin/zkServer.sh status 停止ZK服务 bin/zkServer.sh stop 重启 ...

  9. java:利用xpath删除xml中的空节点

    原始xml内容: <data> <a> </a> <b>b1</b> <awb> <awbpre>123</a ...

随机推荐

  1. git clone出现的error: The requested URL returned error: 401 Unauthorized

    error: The requested URL returned error: 401 Unauthorized while accessing https://git.oschina.net/.. ...

  2. secureCRT The remote system refused the connection.

    转 http://blog.csdn.net/lifengxun20121019/article/details/13627757 我在实践远程登录工具SecureCRT的时候遇到了这个问题 Ubun ...

  3. 利用box-shadow实现伪边框透明到图片

    前阵子突然看到了一个效果,一张图片,有一个边框,但是边框可以透明到图片.直接上图 贴代码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Tr ...

  4. Web干货存档

    今天看了某乎,介绍了web一些基本东西,讲的很好,随手留下https://www.zhihu.com/question/22689579 web开发者文档,纯干货   https://develope ...

  5. python scipy学习-曲线拟合

    根据某地每月的平均温度[17, 19, 21, 28, 33, 38, 37, 37, 31, 23, 19, 18]拟合温度函数. import numpy as np import matplot ...

  6. hibernate id 策略

    @Id@GeneratedValue(generator = "paymentableGenerator")@GenericGenerator(name = "payme ...

  7. 浅谈HTTP中Get与Post的区别

    引用自:http://www.cnblogs.com/hyddd/archive/2009/03/31/1426026.html Http定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET ...

  8. vs里根据json快速创建对应类的方法

    有时候,我们在调用别人接口的时候,服务端返回了一个json格式的字符串,我们要获取json里面的数据的话一般有两种方式: 1.通过正则 2.反序列化成一个对象 第一种方式这里不再多说,主要说一下第二种 ...

  9. Mysql binlog 安全删除

    简介: 如果你的 Mysql 搭建了主从同步 , 或者数据库开启了 log-bin 日志 , 那么随着时间的推移 , 你的数据库 data 目录下会产生大量的日志文件 shell > ll /u ...

  10. 20. Valid Parentheses

    1.题目: Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if th ...