在以下代码摘录中,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>
元素,并仅选择标记
答案 0 :(得分:3)
您的问题标题不代表问题。可以迭代NodeList
,就好像它是一个数组:
for(var i = 0; i < products.length; i++) {
var product = products[i];
// ...
}
你正在进行for in
循环。 product
然后引用密钥(即0
,1
,...),而不是getElementsByTagName
。
答案 1 :(得分:2)
用于迭代索引。你想要
products[product].getElementByTagName('id')
答案 2 :(得分:2)
for(product in products)
:
此代码:
var products = document.getElementsByTagName('body');
for(product in products) { console.log(product); }
给出:
0
length
item
如果要遍历元素,则需要使用常规for
循环。
for (var i = 0; i < products.length; i++) {
var product = products[i];
// do something with product
}