代码之家  ›  专栏  ›  技术社区  ›  Reddy

来自总表/容器的第n个子项

  •  3
  • Reddy  · 技术社区  · 7 年前

    我有一些和同一个班的跳水运动员( class="myDiv" )在一个 .container 这些div基本上可以放在容器的任何地方。。。

    我想瞄准所有有这个班的div .myDiv 并像这样应用css:

    • 第一个div应该有红色
    • 第二组“绿色”
    • ...

    我目前的做法是这样的: jsFiddle (下面是片段副本)

    .myDiv:nth-child(1){color:red;}
    .myDiv:nth-child(2){color:green;}
    .myDiv:nth-child(3){color:aqua;}
    .myDiv:nth-child(4){color:orange;}
    .myDiv:nth-child(5){color:pink;}
    <div class="container">
      <table>
        <tr>
          <td><div class="myDiv">One</div></td>
          <td>Normal text</td>
          <td>Normal text</td>
          <td>Normal text</td>
          <td>
            <table>
              <tr>
                <td><div class="myDiv">Two</div></td>
              </tr>
            </table>
          </td>
          <td><div class="myDiv">Three</div></td>
          <td><div class="myDiv">Four</div></td>
        </tr>
      </table>
      <div class="myDiv">Five</div>
    </div>

    预期结果:

    enter image description here

    实际结果:

    enter image description here

    1 回复  |  直到 7 年前
        1
  •  3
  •   Jason W    7 年前

    如评论所述, nth-child 不是“第n次出现”,而是基于父元素的特定子元素。

    但是,如果将CSS修改为以下内容,则可以使用基本javascript实现类似的效果:

    .myDiv1{color:red;}
    .myDiv2{color:green;}
    .myDiv3{color:aqua;}
    .myDiv4{color:orange;}
    .myDiv5{color:pink;}
    

    然后,下面的简单javascript将分配第n个匹配项。

    var divs = document.getElementsByClassName("myDiv");
    for (var i = 0; i < divs.length; i++)
        divs[i].classList.add('myDiv'+(i+1));
    

    JSFiddle