我这里有一些JS代码。基本上,我试图将元素的ID更改为前一个变量的某个值。
这是我到目前为止所得到的;
function() {
var colorarray = [ "RANDOMCOLOR_0", "RANDOMCOLOR_1", "RANDOMCOLOR_2" ];
var RANcolorarray = colorarray[Math.rsound(Math.random() * (colorarray.length - 1))];
document.getElementsByClassName('RANDOMCOLOR').setAttribute('id', RANcolorarray);
}
此代码在第4行的Chrome中引发错误:Uncaught TypeError: undefined is not a function
这很奇怪,因为JsLint没有发现任何错误。
我也试过用另一种方法设置id's;
document.getElementsByClassName('RANDOMCOLOR').id = RANcolorarray;
但是,虽然这种方法不会在chrome或jslint上引发错误 - 但在检查元素之后它根本不起作用..:/
有什么想法吗?
答案 0 :(得分:0)
document.getElementsByClassName('RANDOMCOLOR')
会返回一个DOM节点列表(即使只有一个匹配项),因此您无法在列表中调用.setAttribute()
,因为列表中没有#{1}}。有这种方法。
您可以从列表中获取第一个项目并在该列表上调用.setAttribute()
或使用for
循环迭代列表并在所有列表上调用它。当然,既然你要设置id,就不应该将多个元素设置为相同的id,所以我假设你只想要一个元素:
document.getElementsByClassName('RANDOMCOLOR')[0].id = RANcolorarray;
或者,更安全一点:
var elems = document.getElementsByClassName('RANDOMCOLOR');
if (elems && elems.length) {
elems[0].id = RANcolorarray;
}