首页 > 代码库 > javascript之解决dom中存在的空白节点问题
javascript之解决dom中存在的空白节点问题
下面有一段html文档
<body> <h1>Introduction to the DOM</h1> <p class="test">There are a number of reasons why the DOM is awesome, here are some:</p> <ul> <li id="everywhere">It can be found everywhere.</li> <li class="test">It's easy to use.</li> <li class="test">It can help you to find what you want, really quickly.</li> </ul> </body>
当我们得到ul标签的下一个节点的时候,我们会习惯的引用下面的js
var every = document.getElementById( "everywhere" ); // and remove it from the document console.info(every.parentNode.childNodes[0].nodeType);但是我们发现,控制台打印的nodeType:3.(chorme浏览器测试)
出现这样的问题是因为什么呢?
这是因为在UL标签和LI标签之间出现了空格,被浏览器误认为是文本节点,所以打印出nodeType=3,而实际我们需要得到的是元素节点LI
如何解决这个问题呢?
原理很简单,即去除节点之间的空格即可;
下面就是一段清除空格的函数
function cleanWhitespace(oEelement){ for(var i=0;i<oEelement.childNodes.length;i++){ var node=oEelement.childNodes[i]; if(node.nodeType==3 && !/\S/.test(node.nodeValue)){ node.parentNode.removeChild(node) } } }通过使用此函数,控制台打印出来的nodeType:1--》这才是正解。
具体详细例子见如下index.html
<html> <head> <title>Introduction to the DOM</title> <script> // We can't manipulate the DOM until the document // is fully loaded window.onload = function(){ // Locate the element with an ID of 'everywhere' var every = document.getElementById( "everywhere" ); // and remove it from the document var a=every.parentNode; console.info(a.childNodes[0].nodeType); cleanWhitespace(a) console.info(a.childNodes[0].nodeType); //清除空白函数 function cleanWhitespace(oEelement){ for(var i=0;i<oEelement.childNodes.length;i++){ var node=oEelement.childNodes[i]; if(node.nodeType==3 && !/\S/.test(node.nodeValue)){ node.parentNode.removeChild(node) } } } }; </script> </head> <body> <h1>Introduction to the DOM</h1> <p class="test">There are a number of reasons why the DOM is awesome, here are some:</p> <ul> <li id="everywhere">It can be found everywhere.</li> <li class="test">It's easy to use.</li> <li class="test">It can help you to find what you want, really quickly.</li> </ul> </body> </html>
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。