0
如何使用js以alert()方式输出childNode的值;功能或创建一个新的元素。例如..有这样的:在JavaScript中输出childNode值
<ul id="main">
<li>
<h2>Alec</h2>
<p>NX-01</p>
<p>command: 2151</p>
</li>
<li>simple</li>
<li>William</li>
</ul>
<script>
var element = document.getElementById("main");
var values = element.childNodes[1].nodeValue; // the text simple this i want to output
alert('the value is:' + values);
</script>
两个问题:这将是浏览器之间的不一致,因为IE <9不包括它'childNodes'集合中唯一的空白文本节点,而其他浏览器一样。其次,所有浏览器都不支持'innerText'(Firefox不支持它,一开始)。 – 2012-01-11 22:29:21
......更不用说浏览器对待'innerText'的方式不同。有些保留空白,有些则不。 – 2012-01-11 22:45:25
@MattMcDonald:的确,'textContent'和'innerText'之间也有区别,例如处理“
您可以使用
innerText
而不是nodeValue
来获取<li>
及其子项中的所有文本。看到这里的工作示例:http://jsfiddle.net/B7Lvd/来源
2012-01-11 21:35:47
使用
.nodeValue
为IE和.textContent
为其他浏览器。来源
2012-01-11 21:35:50 Halcyon
你可能在寻找这样的:
来源
2012-01-11 21:36:43 bardiir
使用jQuery将使这个轻松了许多,但与香草的JavaScript你能做到这样。
或者你也可以使用值分别访问的孩子[0],值[1]等问题是有点难理解,但我认为这是你在找什么做的。
来源
2012-01-11 21:38:57 ryandlf
您需要考虑仅包含空白的文本节点。在大多数浏览器中,这些节点在节点的
childNodes
集合中显示为文本节点,而在IE <中,它们被忽略。因此,您需要检查nodeType
属性,同时通过childNodes
进行迭代。此外,nodeValue
不会为您提供您感兴趣的<li>
元素中的文本:您需要使用DOM标准textContent
属性(回落到不支持textContent
的浏览器中的类似innerText
属性)。来源
2012-01-11 22:06:57