谷歌浏览器不允许我使用setAttribute获取ID

时间:2014-10-25 07:54:28

标签: javascript html google-chrome jslint

我这里有一些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上引发错误 - 但在检查元素之后它根本不起作用..:/

有什么想法吗?

1 个答案:

答案 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; 
}