javascript获取childNodes详情,删除空节点
每个node都包含有nodeType属性。
nodeType取值:
元素节点:1
属性节点:2
文本节点:3
<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>


javascript获取childNodes详情,删除空节点的更多相关文章
- javascript获取dom的下一个节点方法
需求说明: 获取当前节点左节点或者右节点(兄弟节点): css: <style type="text/css"> a:focus { outline: none; } ...
- javascript 获取下一个节点
下一个节点: nextElementSibling 上一个节点 previousElementSibling <div> <select onchange="alert(t ...
- JavaScript获取HTML DOM节点元素详解(转)
在Web运用程序特别是Web 2.0程序开发中,经常要获取页面中某个元素,然后更新该元素的样式.内容等.如何获取要更新的元素,是首先要处理的疑问. 51CTO推荐阅读:JavaScript DOM文档 ...
- [转]Javascript removeChild()删除节点及删除子节点的方法(同样适用于jq)
Javascript removeChild()删除节点及删除子节点的方法 这篇文章主要介绍了Javascript removeChild()删除节点及删除子节点的方法的相关资料,需要的朋友可以参考下 ...
- javascript 获取HTML DOM父、子、临近节点
在Web应用程序特别是Web2.0程序开发中,经常要获取页面中某个元素,然后更新该元素的样式.内容等.如何获取要更新的元素,是首先要解决的问题.令人欣慰的是,使用JavaScript获取节点的方法有很 ...
- html5中JavaScript删除全部节点
如果div里有这么些内容: <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type ...
- javaScript获取文档中所有元素节点的个数
HTML+JS 代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset=&qu ...
- Zookeeper命令行操作(常用命令;客户端连接;查看znode路径;创建节点;获取znode数据,查看节点内容,设置节点内容,删除节点;监听znode事件;telnet连接zookeeper)
8.1.常用命令 启动ZK服务 bin/zkServer.sh start 查看ZK服务状态 bin/zkServer.sh status 停止ZK服务 bin/zkServer.sh stop 重启 ...
- java:利用xpath删除xml中的空节点
原始xml内容: <data> <a> </a> <b>b1</b> <awb> <awbpre>123</a ...
随机推荐
- PHP之readdir()函数
最近在学习php文件操作的相关知识,记录一下readdir()函数其中的一个要注意的点 1. 在$temp=readdir($handle)函数中 readdir获取的是文件名和$handle中的文件 ...
- cacti 安装
cacti:是常用的一个监控软件(开源,免费) 特点:重图形,有数据历史,需要用到数据库的支持,支持web配置,默认不支持告警,可以加插件 cacti安装 1.安装扩展源epel (nagios 和z ...
- @rpath/libswiftCore.dylib问题
dyld: Library not loaded: @rpath/libswiftCore.dylib Referenced from: /private/var/containers/Bundle ...
- 网页端打开手机上的app
iOS/Android 浏览器(h5)及微信中唤起本地APP 在移动互联网,链接是比较重要的传播媒质,但很多时候我们又希望用户能够回到APP中,这就要求APP可以通过浏览器或在微信中被方便地唤起. 这 ...
- android Acitivity之间的几种传值方式(^_^)
对于开发app 来说,数据的传递肯定是少不了的啦,其实app 的本质就是用来呈现数据的. 好的 方式一 Intent.putExtra(TAG,DATA); 应用场景 对于传送单一数据,而又只在 ...
- c语言学习笔记三
第三章,函数 字符串函数 //strcmp int my_strcmp(char *str1,char *str2) { while(*str1 = = *str2) /*不可用while(* ...
- 【转】代码中特殊的注释技术——TODO、FIXME和XXX的用处
(转自:http://blog.csdn.net/reille/article/details/7161942) 作者:reille 本博客网址:http://blog.csdn.net/reille ...
- 51node1264(判断线段相交)
题目链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1264 题意:中文题诶- 思路:对于直线a1a2, b1b2, ...
- python enumerate用法
含义:"枚举,列举" 对于一个可迭代的(iterable)/可遍历的对象(如列表.字符串),enumerate将其组成一个索引序列,利用它可以同时获得索引和值 enumerate多 ...
- 【React】启动dva脚手架
开始前: 确保node版本为6.5以上. // 安装脚手架 npm i dva-cli -g // 自动安装新工程 dva new newProjectName // 导入antd包 npm i an ...