javascript - 在多个 TBODY 中更改 TR 的替代颜色

标签 javascript html css

我想更改驻留在多个 TBODY 中的所有 TR 的替代颜色。我的 html 代码如下所示。

<table>
    <thead>
        <tr><th>Customer</th><th>Order</th><th>Month</th></tr>
    </thead>
    <tbody>
        <tr><td>Customer 1</td><td>#1</td><td>January</td></tr>
        <tr><td>Customer 1</td><td>#3</td><td>March</td></tr>
    </tbody>
    <tbody>
        <tr><td>Customer 2</td><td>#1</td><td>January</td></tr>
        <tr><td>Customer 2</td><td>#2</td><td>April</td></tr>
        <tr><td>Customer 2</td><td>#3</td><td>March</td></tr>
    </tbody>
    <tbody>
        <tr><td>Customer 3</td><td>#1</td><td>January</td></tr>
        <tr><td>Customer 3</td><td>#2</td><td>April</td></tr>        
    </tbody>
</table>

我想将替代颜色设置为以下模式。

<table>
        <tbody>
          <tr> [ODD][Red]
          <tr> [EVEN][Green]
          <tr> [ODD][Red]
        </tbody>
        <tbody>
          <tr> [EVEN][Green]
          <tr> [ODD][Red]
        </tbody>
        <tbody>
          <tr> [EVEN][Green]
          <tr> [ODD][Red]
          <tr> [EVEN][Green]
        </tbody>
</table>

我在 StackOverFlow 上尝试了很多示例,但我的场景不匹配。以下是我试过的链接。

Achieve alternate row colours across multiple tbody elements

我只需要使用 CSS 和 Javascript [不是 jquery]。请建议如何实现这一目标。

谢谢

最佳答案

仅使用 CSS 在您的场景中是不可能的。

但是,使用 Javascript,您可以遍历所有 <tr>无论在哪个tbody它包含在内。并且,只为偶数添加一个类......

var trs = document.querySelectorAll("tbody tr");
for(var i=0; i<trs.length; i++) {
  if(i % 2 == 0)
    trs[i].className = "even";
}
tbody tr {
  color: red;
}

tbody tr.even {
  color: blue;
}
<table>
    <thead>
        <tr><th>Customer</th><th>Order</th><th>Month</th></tr>
    </thead>
    <tbody>
        <tr><td>Customer 1</td><td>#1</td><td>January</td></tr>
        <tr><td>Customer 1</td><td>#3</td><td>March</td></tr>
    </tbody>
    <tbody>
        <tr><td>Customer 2</td><td>#1</td><td>January</td></tr>
        <tr><td>Customer 2</td><td>#2</td><td>April</td></tr>
        <tr><td>Customer 2</td><td>#3</td><td>March</td></tr>
    </tbody>
    <tbody>
        <tr><td>Customer 3</td><td>#1</td><td>January</td></tr>
        <tr><td>Customer 3</td><td>#2</td><td>April</td></tr>        
    </tbody>
</table>

关于javascript - 在多个 TBODY 中更改 TR 的替代颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43613306/

相关文章:

javascript - 使图像在悬停/鼠标悬停时淡出颜色 jQuery

出现滚动条时 HTML 背景图像改变大小

javascript - 带有日期字符串的 Angular orderBy

JavaScript - 嵌套函数删除数组的 .length

html - 'ease back' 转换中的 IE10/IE11 错误

javascript - 在图像顶部制作 2 个 div,即全图像高度和 50% 宽度

javascript - 使用javascript在本地保存的Keydown事件

javascript - webpack 加载器始终在编译中包含 node_modules

javascript - 如何刷新 Meteor.Router 订阅的数据?

html - 页面 CSS 上的多个切换开关