gpt4 book ai didi

javascript - getElementsByTagName 返回字符串

转载 作者:行者123 更新时间:2023-11-30 07:46:14 26 4
gpt4 key购买 nike

我的最终目标是获取单选按钮列表并选中/取消选中它们。这是我的代码:

    for (var radio in document.getElementsByTagName('input')) {
if(typeof (radio) != "string")
alert(radio);
}

alert 永远不会被调用。

对 document.getElementsByTagName 的调用返回了一个从 0 到列表长度的字符串列表,因此它们的所有属性(类型、id 等)都是未定义的,我不能对它们做太多事情。

我是不是做错了什么?为什么不为这些元素返回对象?

这是在 firefox 4 和 chrome 中的,如果有帮助的话。

最佳答案

getElementsByTagName 返回一个 NodeList 对象,它是 Array -like 在它原型(prototype)化任意数字的意义上索引到它。

您应该使用for..in 循环来枚举NodeList

为什么?

因为 for..in 遍历对象的所有属性,这将导致 NodeList 中存在额外的不需要的属性以及原型(prototype)化的任意索引在它上面(顺便说一下,这也是属性。)

由于您正在遍历索引,因此可以保证您不会获得除 DOMElement 对象之外的任何对象。因此,您不需要 typeof 检查。

所以,我想你是想这样做:

var els = document.getElementsByTagName('input');
for(var i = 0, j = els.length; i < j; i++) {
alert(els[i]);
}

或者,你也可以这样做,但我不推荐这样做:

var els = document.getElementsByTagName('input');
for(var index in els) {
if(els.hasOwnProperty(index) && typeof index === 'number') {
//we have an element
alert(els[index]);
}
}

关于javascript - getElementsByTagName 返回字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5668892/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com