在下面的代码摘录中,products是一个xml节点列表,其结构为:
<products>
<product>
<id>1</id>
<name>item1</name>
</product>
<product>
<id>2</id>
<name>item2</name>
</product>
</products>
xml = httpRequest.responseXML
products = xml.getElementsByTagName('products')
products[0].constructor
//=>ElementConstructor
product = products[0]
//=><product>…</product>
product.constructor
//=>ElementConstructor
product.getElementsByTagName('id')
//[ <id>1</id> ]
for(product in products){product.getElementsByTagName('id')}
//=>TypeError: 'undefined' is not a function (evaluating 'product.getElementsByTagName('id')')
如何迭代每个 <product>
<products>
中的元素元素,并仅选择标签
最佳答案
您的问题标题并不代表问题所在。一个NodeList
可以像数组一样进行迭代:
for(var i = 0; i < products.length; i++) {
var product = products[i];
// ...
}
你正在做for in
环形。 product
然后引用没有 0
的键(即 1
、 getElementsByTagName
、...) .
关于javascript - 为什么 NodeList[0] 和 node = NodeList[0] 的行为不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12034440/