javascript - 为什么 NodeList[0] 和 node = NodeList[0] 的行为不同?

标签 javascript xml dom

在下面的代码摘录中,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 的键(即 1getElementsByTagName 、...) .

关于javascript - 为什么 NodeList[0] 和 node = NodeList[0] 的行为不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12034440/

相关文章:

c# - 在 asp.net 中使用嵌套转发器

c# - 使用 asp.net 成员(member)资格有哪些优点和缺点?

javascript - 遍历 DOM 并获取 ID

javascript - 通过 JavaScript 查明某个元素是否被遮挡

javascript - 为什么通过 yield 传递回调时 `setTimeout` 不起作用?

javascript - 在 ClojureScript 中检索数字的二进制表示

xml - 验证 XML/识别中断点的快速方法

java - Android ListView 只显示最新的项目

html - Angular 7.1.4 HTML 避免复制粘贴重组

javascript - 我的 html 选择代码选择所有 html 框