javascript迭代通过div改变背景颜色

时间:2016-12-20 10:23:13

标签: javascript html

我想自动将背景颜色更改为每个div的不同背景颜色,每个div应该有不同的颜色。

我不完全确定为什么我的html没有正确显示以及为什么我得到[对象HTMLCollection]

我的HTML:

<div id="box">
    <h3>box</h3>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
</div>

我使用的功能是:

bgColor(document.getElementById('box').getElementsByTagName('div'));

    function bgColor() {

      var tableCntr= document.getElementById('box');
      var tblHTML = document.getElementsByTagName('div');

      var colors = [['red','blue','green'],['orange', 'black', 'purple']]  ;

        for(var i=0;i<colors.length;i++) {

          for(var j=0;j<colors[0][0].length;j++) {
            tblHTML += "<div style='background:" + colors[i][j] + "'> </div>" ;
          }
       }
      tableCntr.innerHTML = tblHTML ;  
    }

    window.onload = bgColor;

jsfiddle

4 个答案:

答案 0 :(得分:1)

javascript解决方案,你不需要在函数bgColor()中传递agrumenst;

    bgColor();
    function bgColor() {

    var tableCntr= document.getElementById('box');
    var tblHTML = '';//document.getElementsByTagName('div');

    var colors = [['red','blue','green'],['orange', 'black', 'purple']]  ;

     for(var i=0;i<colors.length;i++) {
         for(var j=0;j<colors[0][0].length;j++) {
            tblHTML += "<div style='background:" + colors[i][j] + "'> </div>" ;
         }
     }
     tableCntr.innerHTML = '<h3>box</h3>'+tblHTML ;  
    }

   window.onload = bgColor;

jQuery解决方案

bgColor();

 function bgColor() {

  var tableCntr = jQuery('#box');
  var tblHTML = '';
  var colors = [['red','blue','green'],['orange', 'black', 'purple']]  ;

    for(var i=0;i<colors.length;i++) {
      for(var j=0;j<colors[0][0].length;j++) {
        tblHTML += "<div style='background:" + colors[i][j] + "'> </div>" ;
      }
   }
  tableCntr.html( tblHTML );  
}

window.onload = bgColor;

答案 1 :(得分:1)

为什么这么复杂......

function bgColor(ID) {

  var tableCntr= document.getElementById(ID);
  var DIVs = tableCntr.getElementsByTagName('div');

  var colors = ['red','blue','green','orange', 'black', 'purple']  ;

  var colourIndex = 0;
  for(var i=0;i<DIVs.length;i++) {

     DIVs[i].setAttribute('style','background-color: '+colors[colourIndex]);
     colourIndex = (colourIndex + 1) % colors.length;
  }
}

bgColor('box');

答案 2 :(得分:1)

function bgColor(id) {
  var divs = document.getElementById(id).getElementsByTagName('div'),
      colors = ['red','blue','green','orange', 'black', 'purple'];

  [].forEach.call(divs, function(d, index) {
    d.setAttribute('style', 'background-color: ' + colors[index % colors.length]);
  });
}

bgColor('box');
#box div {
  width: 30px;
  height: 30px;
  margin-right: 5px;
  margin-bottom: 1px;
  background-color: black;
}
<div id="box">
    <h3>box</h3>
    <div>&nbsp;</div>
    <div>&nbsp;</div>
    <div>&nbsp;</div>
    <div>&nbsp;</div>
    <div>&nbsp;</div>
    <div>&nbsp;</div>
    <div>&nbsp;</div>
    <div>&nbsp;</div>
    <div>&nbsp;</div>
    <div>&nbsp;</div>
    <div>&nbsp;</div>
    <div>&nbsp;</div>
    <div>&nbsp;</div>
    <div>&nbsp;</div>
    <div>&nbsp;</div>
    <div>&nbsp;</div>
    <div>&nbsp;</div>
</div>

答案 3 :(得分:0)

似乎是一个解决方案https://jsfiddle.net/8rkceLv9/3/ 您只需选择#box中的所有div并将其设置为背景。 我没有在数组中看到数组中的点。