ice-cream 发表于 2013-2-7 20:18:11

删除空白子节点

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>nav</title><script type="text/javascript">function test(){var navId = document.getElementById("nav");var childNum = navId.childNodes;for(var i = 0;i<childNum.length;i++){var node = childNum;if (node.nodeType == Node.TEXT_NODE && /\s/.test(node.nodeValue)){node.parentNode.removeChild(node);}}alert(childNum.length);}</script></head>    <body ><dl id="nav"><dd><ul><li>111</li></ul></dd><dd><ul><li>222</li></ul></dd><dd><ul><li>333</li></ul></dd></dl></body></html>       这是一个很常见的bug,浏览器里会把标签之间的空白处也认为是一个子节点,如果要正确的得到子节点的个数,必须把空白的节点删除。
      关键点:if (node.nodeType == Node.TEXT_NODE && /\s/.test(node.nodeValue)).如果节点的类型是Node.TEXT_NODE (3)(即:纯文本,它没有子节点)并且内容为空白字符。
页: [1]
查看完整版本: 删除空白子节点