博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
js 选取子节点时去除非IE浏览器的换行符
阅读量:4349 次
发布时间:2019-06-07

本文共 975 字,大约阅读时间需要 3 分钟。

用childNOdes选择一个父节点的子节点时,非IE浏览器如FF,chrome把换行符也当做一个元素了。

 
var a =document.getElementById("test").childNodes;  
a在IE中是3,但在chrome中是7,是因为chrome
把换行也当做一个元素了。
 
可以用下面的方法去除换行符子节点
function clearSpace(elem) {
var elemchild = elem.childNodes; for (var i = 0; i < elemchild.length; i++) { var s = elemchild[i].nodeName; var r = elemchild[i].nodeValue; if (s == "#text" && /\s/.test(r)) { contentdiv.removeChild(elemchild[i]); } }}

 

上述函数遍历子元素,当元素里面有节点类型是文本并且文本类型节点的节点值是空的。就把他删除。

nodeName可以得到一个节点的节点名字,在JS里的正则表达式\s是表示包括空格、制表符、换页符等空白字符的其中任意一个。

test() 方法用于检测一个字符串是否匹配某个模式.语法是: RegExpObject.test(string)

如果字符串 string 中含有与 RegExpObject 匹配的文本,则返回 true,否则返回 false。

 

其实还有另一种方法得到父节点的子节点数组,如

var divarray = document.getElementById("test").getElementsByTagName("div");

但是这里有一个问题:如果test的后代节点也有div,那么用getElementsByTagName("div")得到的数组长度要远大于3.所以还是清除换行符的方法比较可靠

 

 

 

转载于:https://www.cnblogs.com/xiang1336/p/3484823.html

你可能感兴趣的文章
NIO(2):Channel
查看>>
Consistent Hashing算法
查看>>
C++基础--完善Socket C/S ,实现客户端,服务器端断开重连
查看>>
lvs,nginx反向代理,虚拟主机
查看>>
jquip,更简洁的代码
查看>>
【OJ】PAT-A解题报告
查看>>
基础练习 回文数
查看>>
科普-- 白话HTTPS
查看>>
文档语法
查看>>
利用套接字实现进程通信一例
查看>>
linux中shell变量$#,$@,$0,$1,$2的含义解释
查看>>
常用的shell命令整理
查看>>
A Brief Introduction to the Design of UBIFS
查看>>
了解你的Linux系统:必须掌握的20个命令
查看>>
js setInterval 启用&停止
查看>>
knockoutJS学习笔记04:监控属性
查看>>
18.10.6 考试总结
查看>>
iptables防火墙网路安全实践配置
查看>>
ASP.net Web窗体添加多条数据到数据库
查看>>
PHP面向对象(三)
查看>>