var objects = document.getElementsByTagName('object');
for (var i=0, n=objects.length;i<n;i++) {
objects[i].style.display='none';
var swfurl;
var j=0;
while (objects[i].childNodes[j]) {
if (objects[i].childNodes[j].getAttribute('name') == 'movie') {
/* DO SOMETHING */
}
j++;
}
var newelem = document.createElement('div');
newelem.id = '678297901246983476'+i;
objects[i].parentNode.insertBefore(newelem, objects[i]);
new Gordon.Movie(swfurl, {id: '678297901246983476'+i, width: 500, height: 400});
}
它说 getAttribute 不是 childNodes[j] 的函数。怎么了?我不明白这一点。
请您参考如下方法:
记住 childNodes
包括文本节点(和注释节点,如果有的话,以及处理指令,如果有的话,等等)。请务必检查 nodeType
在尝试使用仅 Element
s 的方法之前有。
更新:在 2018 年,您可以使用 children
相反,它只包含 Element
子元素。所有现代浏览器和 IE8-IE11 都支持它。 (旧版 IE 中有一些怪癖,请参阅 polyfill 的链接以消除它们。)