表行数不定,怎样根据表行数设置每行不同的背影色,不要有相近的颜色出现  

解决方案 »

  1.   


    <table id="table1" width="100" border="0" cellspacing="0" cellpadding="0">
      <tr>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
      </tr>
      <tr>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
      </tr>
      <tr>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
      </tr>
      <tr>
        <td>&nbsp;</td>
        <td style="background-color:">&nbsp;</td>
      </tr>
    </table>
    <script>
    (function table(){
    var table =document.getElementById("table1");
    for(i=0;i<table.rows.length;i++){
    table.rows[i].style.backgroundColor = (i%2==0)? "#333333":"#CCCCCC"
    }
    })();
    </script>
      

  2.   

    只能保证相邻行颜色不相近<style>
    td{
    height:24px;
    }
    </style>
    <table id="table1" border="1" width="100%">
    <tr><td></td></tr>
    <tr><td></td></tr>
    <tr><td></td></tr>
    <tr><td></td></tr>
    <tr><td></td></tr>
    <tr><td></td></tr>
    <tr><td></td></tr>
    <tr><td></td></tr>
    <tr><td></td></tr>
    <tr><td></td></tr>
    <tr><td></td></tr>
    <tr><td></td></tr>
    </table>
    <script>
    window.onload = function(){
    var table1 = document.getElementById("table1");
    var rgb = {"red":255, "green":255, "blue":255};// 初始颜色,无实际意义
    rgb = getNewColor(rgb);
    for(var i = 0; i < table1.rows.length; i++){
    rgb = getNewColor(rgb);
    var red = rgb["red"].toString(16);
    var green = rgb["green"].toString(16);
    var blue = rgb["blue"].toString(16);
    var newcolor = "#" + (red.length == 1 ? ("0" + red) : red)
    + (green.length == 1 ? ("0" + green) : green)
    + (blue.length == 1 ? ("0" + blue) : blue);
    table1.rows[i].style.backgroundColor = newcolor;
    }
    }function getNewColor(rgb){
    var color = Math.round(Math.random() * 255);
    while(Math.abs(rgb["red"] - color) < 50){
    color = Math.round(Math.random() * 255);
    }
    rgb["red"] = color; color = Math.round(Math.random() * 255);
    while(Math.abs(rgb["green"] - color) < 50){
    color = Math.round(Math.random() * 255);
    }
    rgb["green"] = color; color = Math.round(Math.random() * 255);
    while(Math.abs(rgb["blue"] - color) < 50){
    color = Math.round(Math.random() * 255);
    }
    rgb["blue"] = color; return rgb;
    }
    </script>
      

  3.   

    可以把需要的颜色值保存到数组中。
    然后让rows[i]的背景色等于 color[i]的颜色值。前提是,颜色值的数量要比rows 多,
    如果少的话,那肯定还是有重复的。所有要考虑下你的rows到底有多少,可以考虑做个分页。
    这样50行,没有重复的颜色行,应该是没有问题的仅供参考
      

  4.   

    变化rgb的数值了。
    太相近的话,数值差选大点即可。