我在外部.js文件中有这个javascript函数:
function init() {
var v = document.getElementsByTagName('video'),i;
console.log(v.length);
for (i in v) {
console.log("class:" + v[i].className + "id:" + v[i].id);
}
}
init();
专用html页面中的一个视频元素。这是脚本返回Chrome控制台的内容:
1 // v.length
class:video1id:bigBunny //first pass of for loop
class:undefinedid:undefined //??
class:undefinedid:undefined //??
为什么会这样?
答案 0 :(得分:8)
NodeList
(由getElementsByTagName
返回)不仅包含元素,还包含两个附加属性:
length (the amount of elements)
item (to get an element, basically the same as using [i] notation)
你也在迭代它们并将它们视为元素。他们不是;他们没有班级也没有身份证。您应该使用数字for
循环(for(var i = 0; i < v.length; i++
)代替。这(与for in
不同)显然不能包含这些属性。
答案 1 :(得分:1)
无论如何,你应该使用传统的for循环。
for(var i = 0; i < v.length; i++)
{
console.log("class:" + v[i].className + "id:" + v[i].id);
}