使用JavaScript访问子节点方法elementNode.childNodes时,需要注意的地方
有这样一个HTML结构
<div>
javascript
<p>javascript</p>
<div>jQuery</div>
<h5>PHP</h5>
</div>
使用JavaScript访问它的子节点
var children = document.getElementsByTagName('div')[0].childNodes; children.length //
正如你看到的,children.length
的结果不是4,而是7!为什么呢?
因为浏览器会把节点之间的空白符当作文本结点处理。
<div>
javascript
<p>javascript</p> <!-- ←空白结点 -->
<div>jQuery</div> <!-- ←空白结点 -->
<h5>PHP</h5> <!-- ←空白结点 -->
</div>
4个可见结点 + 3个看不出来的空白结点 = 7个结点
这可以通过用JavaScript判断结点类型(元素的nodeType值为1,文本的nodeType值为3)的方式来进行验证
var children = document.getElementsByTagName('div')[0].childNodes;
for (var i = 0; i < children.length; i++) {
if (children[i].nodeType === 1) { // 如果是元素结点
document.write(children[i].innerText + '<br>');
} else if (children[i].nodeType === 3) { // 如果是文本结点
document.write(' "' + children[i].nodeValue +'"<br>');
}
}
页面输出的结果是这样的
" javascript "
javascript
" "
jQuery
" "
PHP
" "
(完)
使用JavaScript访问子节点方法elementNode.childNodes时,需要注意的地方的更多相关文章
- 访问子节点childNodes
访问子节点childNodes 访问选定元素节点下的所有子节点的列表,返回的值可以看作是一个数组,他具有length属性. 语法: elementNode.childNodes 注意: 如果选定的节点 ...
- 局部内部类访问它所在方法的局部变量时,要求该局部变量必须声明为final的原因
这是java的一条规则.那么为什么会有这条规则呢?要想弄懂这个问题,就需要弄懂局部内部类对象和局部变量的生命周期的谁更长的问题. 首先,看一段代码,以没有将变量声明为final的代码作为例子,代码如下 ...
- js子节点children和childnodes的用法(非原创)
想要获取子节点的数量,有几种办法. childNodes 它会把空的文本节点当成节点, <ul> 文本节点 <li>元素节点</li> 文本节点 <li> ...
- js子节点children和childnodes的用法
想要获取子节点的数量,有几种办法. childNodes 它会把空的文本节点当成节点, <ul> 文本节点 <li>元素节点</li> 文本节点 <li> ...
- c# winform结合数据库动态生成treeview的父节点和子节点方法和思路
tb_food表的结构如图一: tb_foodtype表的结构如图二: //获取tb_foodtype表中的所有数据 private void InitDataTable() { SqlConnect ...
- iview2.0 父组件访问子组件 方法
//从父组件中访问子组件 可以给子组件定义标识 通过ref="chead" 定义 通过父组件就可以访问了
- 关于html中利用jQuery选择子节点方法总结——待续
好几次碰到类似的要求,每次用的都不一样,在之前的面试的时候就被问到,突然觉得虽然自己做过但是说不出头绪,只能回答什么parent(),next()等等.所以想整理一下. 1.需求一:同页面有两个表格, ...
- iframe访问子页面方法
在Iframe中调用子页面的Js函数 调用IFRAME子页面的JS函数 说明:假设有2个页面,index.html和inner.html.其中index.html中有一个iframe,这个iframe ...
- javascript查找子节点时,html里的换行可能会被当成节点
1.直接去HTML里找到该换行的地方去掉换行 2.写一个方法把元素类型为空格而且是文本都删除 function del_ff(elem){ var elem_child = elem.childNod ...
随机推荐
- oracle or语句的坑
SELECT SUM(tjo.pay_amount) FROM tb_jf_order tjo,tb_jf_gateway_trade_log tjg WHERE tjo.order_id = tjg ...
- Vimium使用快捷键总结
chrome 快捷键: ctrl+w 关闭当前标签 ctrl+t 新建标签 gg行首 shift+g 行尾 Vimium使用快捷键总结 j, <c-e> : Scroll down k, ...
- Quartz 入门详解
Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用.Quartz可以用来创建简单或为运行十个,百个, ...
- 使用Charles检测HTTPS网站的数据包
1.下载Charles 下载地址:https://www.charlesproxy.com/download/ 2.安装Charles的证书 选择Help->SSL Proxying->I ...
- PostgreSQL function examples
warehouse_db=# CREATE TABLE warehouse_tbl(warehouse_id INTEGER NOT NULL,warehouse_name TEXT NOT NULL ...
- PIXHAWK DIY LED扩展板
板载的状态LED灯,因为各种灰机的外壳有可能会被挡住看不到状态.那么我们也是可以用arduino板子来扩展实现外置,其实就是用328P芯片来实现. 这程序支持WS2812B的全彩LED灯. 默认的信号 ...
- jee websocket搭建总结
1.使用框架spring+springmvc+mybatis+jdk7+tomcat7+maven 2.基本原理: a. WebSocket协议是一种双向通信协议,它建立在TCP之上,同http一样通 ...
- ssh+expect批量分发
Expect安装 [root@web02 scripts]# yum install expect SSH密钥生成 [root@web02 scripts]# ssh-keygen -t dsa ...
- C# MVC jsonp初接触成功
利用jsonp进行跨域请求资源 C# MVC ApiControllers准备如下: 1.需要在引用处右键管理NuGet安装jsonp插件 2.在Application_Start()中配置 Glob ...
- 桌面显卡天梯图和桌面cpu天梯图
桌面cpu天梯图: 桌面显卡天梯图: