无法在包含节点的数组项上设置属性

时间:2014-09-30 00:12:37

标签: javascript

我是初学者Javascripter,我想运行此脚本来随机更改框的背景颜色。这是我的JS:

var divs = document.getElementsByClassName("col-sm-3");

var innDivs = [];

colournumber = function() {
return(Math.random().toString(16) + '000000').slice(2, 8);
}

for (i=0;i<divs.length;i++) {
innDivs[i] = divs[i].getElementsByTagName("div");
innDivs[i].setAttribute("style","background-color:#"+colournumber());
}

但我收到的错误是我无法在innDivs [i]上设置属性。我有什么想法吗?

http://jsfiddle.net/w8gLqghz/

2 个答案:

答案 0 :(得分:0)

正如您在调试器中看到的那样,innDivs为空(您从未在其中放入任何内容)。

因此,innDivs[i]不存在。

您的意思是divs吗?

答案 1 :(得分:0)

getElementsByTagName为您提供元素列表。元素本身具有setAttribute方法 您必须遍历列表并设置每个元素的属性;

for (i=0;i<divs.length;i++) {
    innDivs[i] = divs[i].getElementsByTagName("div");
    for (j=0;j<innDivs[i].length;j++) {
        innDivs[i][j].setAttribute("style","background-color:#"+colournumber());
    }
}

http://jsfiddle.net/mowglisanu/w8gLqghz/5/