Javascript:子节点的时候存在缺陷.长度显示太多的元素
Javascript: childNodes.length showing too many elements?
我得到一些奇怪的结果,而在JavaScript中解析一些XML。我在外部文件中有以下XML:
<?xml version="1.0" encoding="UTF-8" ?>
<alerts>
<alert><![CDATA[ This is the first alert message in a series... ]]></alert>
<alert><![CDATA[ This is the second alert message in a series, which features a <a href="http://www.facebook.com" target="blank">hyperlink</a>... ]]></alert>
<alert><![CDATA[ This is the third alert message in a series, which features <span class="emphasizedAlertText">text formatted via a css rule</span> ]]></alert>
<alert><![CDATA[ This is the fourth alert message in a series, which features a <span class="fauxHyperlink" onclick="someFunction();">javascript call</span>... ]]></alert>
</alerts>
通过XMLHttpRequest抓取文件后,我使用以下函数将其输出到页面:
function testFunc()
{
var xhrRsp = 'failed to initialize';
rslt = document.getElementById('rslt');
if(xhr.readyState == 4)
{
if(xhr.status == 200)
{
xhrRsp = xhr.responseXML;
xhrTree = xhrRsp.documentElement.childNodes;
rslt.innerHTML = xhrRsp + ' (' + xhrTree.length + ' nodes) ';
for(var i = 0; i < xhrTree.length; i++)
{
if(xhrTree[i].nodeName != '#text')
{
rslt.innerHTML = rslt.innerHTML + '<br/>' + xhrTree[i].nodeName + ' (' + xhrTree[i].nodeType + ') ' + ' = ' + xhrTree[i].childNodes[0].nodeValue;
}
}
//rslt.innerHTML = outMsg;
}
}
else
{
xhrRsp = 'Loading...';
}
}
当我在浏览器中运行脚本时,我得到如下结果:
Click Me
[object Document] (9 nodes)
alert (1) = This is the first alert message in a series...
alert (1) = This is the second alert message in a series, which features a hyperlink...
alert (1) = This is the third alert message in a series, which features text formatted via a css rule
alert (1) = This is the fourth alert message in a series, which features a javascript call...
我很困惑为什么节点的数量返回为9,以及为什么这些节点中的其他节点都以#text的形式出现,我目前在上面的脚本中过滤掉了#text。我一直在四处寻找,不知道我错过了什么。
提前感谢!
这是W3C兼容浏览器的正确行为。元素之间的空白作为TextNode
包含在DOM中。
您可能会发现,在IE8及以下版本中,没有生成文本节点。这是因为这些浏览器在这方面没有遵守规范。
我敢打赌你是在一个蹩脚的浏览器上运行的,它不处理空格。
无论如何,您正在使用if过滤某个节点,因此这并不奇怪。一些快速的日志记录可以非常快速地解决您的问题…
相关文章:
- 从桌面读取python文件时高亮显示代码
- 使用JS如何动态更改显示的html文件中的文本背景颜色
- 如何在生成下载文件时显示加载动画
- React重新渲染但未显示正确的组件
- nodejs-expressjs上传图像并显示它们
- 使用JSP从服务器检索和显示图像
- 音频控件在mouseover上显示,在mouseout上淡出
- 让文本输入幻灯片显示输入时的新文本输入?然后向后滑动
- 使用电话间隙在Android应用程序中显示SQL Lite的数据
- 显示5秒后隐藏潜水
- 画廊图像未显示
- 不显示带有本地json文件数据的谷歌地图脚本
- 如何将json数据显示为html
- 谷歌地图不是以HTML显示,而是在JS Fiddle上工作
- Windows8应用程序(html&Javascript):从图片库(除了文件选择器)显示图像的另一种方式
- 高亮显示时编辑文本大小和颜色
- 有时数据是't显示在浏览器中
- 当鼠标悬停在文本中的单词上时显示警报
- 当我滚动到每个有缺陷的部分时,菜单项得到突出显示
- Javascript:子节点的时候存在缺陷.长度显示太多的元素