【问题标题】:Set background color in table cell在表格单元格中设置背景颜色
【发布时间】:2019-10-21 19:12:44
【问题描述】:

我正在探索 HTML 和 Jquery,我有一个简单的页面,我在其中使用包含一个表格行和十个表格单元格的表格。页面加载时,每个单元格的背景颜色为黄色。 我需要每两秒钟更改一次每个单元格的颜色。所以,我需要完成的是,获取每个单元格 id 并一个接一个地定期更改单元格颜色。 例如首先改变背景颜色 (变为绿色)id 为 1 的单元格,然后等待两秒钟移动到下一个单元格 id 为 2 更改它的背景颜色,直到单元格 id 为 10。

 $('table #my_table td').each(function(){
 var ids = $(this).attr('id');
 console.log(ids);// This will return 1,2,3,4,5,6,7,8,9,10
 });

 <div>
    <table id="my_table" style="width:55%">
        <tbody>
            <tr>
                    <td id="1" style="border: 1px solid black;">&nbsp;</td>
                    <td id="2" style="border: 1px solid black;">&nbsp;</td>
                    <td id="3" style="border: 1px solid black;">&nbsp;</td>
                    <td id="4" style="border: 1px solid black;">&nbsp;</td>
                    <td id="5" style="border: 1px solid black;">&nbsp;</td>
                    <td id="6" style="border: 1px solid black;">&nbsp;</td>
                    <td id="7" style="border: 1px solid black;">&nbsp;</td>
                    <td id="8" style="border: 1px solid black;">&nbsp;</td>
                    <td id="9" style="border: 1px solid black;">&nbsp;</td>
                    <td id="10" style="border: 1px solid black;">&nbsp;</td> 
            </tr>
        </tbody>
    </table>
</div>

【问题讨论】:

  • $('table #my_table td').css("background","#FF0000")?
  • 使用interval 或链式timeout 每X 秒执行一次操作。如果您需要更具体的帮助,请发布您自己解决此问题的尝试,以便我们帮助您进行调试。

标签: jquery html


【解决方案1】:

您不需要将id 分配给每个表格行。只需使用setInterval() 循环处理每一行就可以了。像这样:

$('table#my_table tr').each(function() {
  var tr = $(this);
  setInterval(function() {
    var current = tr.attr('data-current');
    tr.find('td').eq(current).css('background-color', tr.data('color'));
    current++;
    tr.attr('data-current', current);
    if (current > tr.find('td').length) {
      tr.find('td').css('background-color', '#fff');
      tr.attr('data-current', 0);
    }
  }, 200);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table id="my_table" style="width:55%">
  <tbody>
    <tr data-color="#ff0" data-current="0">
      <td id="1" style="border: 1px solid black;">&nbsp;</td>
      <td id="2" style="border: 1px solid black;">&nbsp;</td>
      <td id="3" style="border: 1px solid black;">&nbsp;</td>
      <td id="4" style="border: 1px solid black;">&nbsp;</td>
      <td id="5" style="border: 1px solid black;">&nbsp;</td>
      <td id="6" style="border: 1px solid black;">&nbsp;</td>
      <td id="7" style="border: 1px solid black;">&nbsp;</td>
      <td id="8" style="border: 1px solid black;">&nbsp;</td>
      <td id="9" style="border: 1px solid black;">&nbsp;</td>
      <td id="10" style="border: 1px solid black;">&nbsp;</td>
    </tr>
    <tr data-color="#f00" data-current="0">
      <td id="1" style="border: 1px solid black;">&nbsp;</td>
      <td id="2" style="border: 1px solid black;">&nbsp;</td>
      <td id="3" style="border: 1px solid black;">&nbsp;</td>
      <td id="4" style="border: 1px solid black;">&nbsp;</td>
      <td id="5" style="border: 1px solid black;">&nbsp;</td>
      <td id="6" style="border: 1px solid black;">&nbsp;</td>
      <td id="7" style="border: 1px solid black;">&nbsp;</td>
      <td id="8" style="border: 1px solid black;">&nbsp;</td>
      <td id="9" style="border: 1px solid black;">&nbsp;</td>
      <td id="10" style="border: 1px solid black;">&nbsp;</td>
    </tr>
  </tbody>
</table>

【讨论】:

  • 不知道谁给你减分,但我也共享了 html 代码,但你的代码将所有单元格的颜色一起更改
  • 我已经用你的 html 标记更新了我的答案并编辑了一些 javascript。
  • 最后一件事如果最后一个单元格颜色更改为黄色,如何设置白色?再次将所有单元格颜色设置为白色,然后再设置为黄色。并且我们可以在 TD/TR 级别上执行此操作吗?我在表格中有很多行我想要不同行 td 的不同颜色。
  • 再次更新了 html 标记和脚本。请看是不是你需要的,(我把定时器改成200ms进行测试)
  • 令人印象深刻的解决方案 :-)
【解决方案2】:

var td = 0;
var itv = setInterval(function() {

  $('table#my_table tr').eq(td).css('background-color', '#ff0');
   clearColour(td);
  td++;

  if (td === $('table#my_table td').length) {
  
    clearInterval(itv);
    $('table#my_table tr').eq(td).css('background-color', '#ff0');
  }
  
}, 2000);



function clearColour(td){
$('table#my_table tr').eq(--td).css('background-color', 'white');
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table id="my_table">
  <tbody>
    <tr>
      <td>1</td>
      <td>Testing 1</td>
    </tr>
    <tr>
      <td>2</td>
      <td>Testing 2</td>
    </tr>
    <tr>
      <td>3</td>
      <td>Testing 3</td>
    </tr>
    <tr>
      <td>4</td>
      <td>Testing 4</td>
    </tr>
  </tbody>
</table>

【讨论】:

  • 黄色应保持,直到所有单元格变为黄色,一旦所有 TD 变为黄色,而不是全部变为白色并重新开始颜色更改过程。如果我们可以使用行级 ID 来实现,那就太好了
  • 请注意,您的答案是从我的答案中复制而来的。 (我的答案现在已经更新了。)
猜你喜欢
  • 2012-06-06
  • 2010-11-21
  • 2015-06-02
  • 2011-10-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-18
  • 2010-10-28
相关资源
最近更新 更多