将类添加到第n个子对象

时间:2019-04-03 23:23:16

标签: javascript php html

我需要向tbody td元素添加一个类,其中td的位置对每一行递增1:

无法正常工作,我尝试了一些没有结果的示例。

+-----+-------------+-------------+--------------+
|     |     A       |      B      |      C       |
+-----+-------------+-------------+--------------+
| A   | td addClass |             |              |
|     |             |             |              |
| B   |             | td addClass |              |
|     |             |             |              |
| C   |             |             | td addClass  |
+-----+-------------+-------------+--------------+

这是我的HTML外观

<table class="table display">
    <thead>
        <tr>
            <th></th>
            <?php
            $counts = count($users);
            foreach ($users as $row) {
                echo '<th>'.$row->user.'</th>';
            }
            ?>
        </tr>
    </thead>

    <tbody>
        <?php
        $startC = 1;

        foreach( $users as $row ) {
            echo '<tr class="tbody_tr_" id="'.$startC++.'">';
            echo '<td>'.$users->user.'</td>';

            for($i=0; $i<$counts; $i++) {
                echo '<td class="selectable"><a href="#"></a></td>';
            }

            echo '</tr>';
        }
        ?>
    </tbody>
</table>

3 个答案:

答案 0 :(得分:0)

您可以执行以下操作: 基本上,您可以将$ i与相等的startC进行比较,添加类,因为您要添加的列号和行号相同的类。

<table class="table display">
    <thead>
        <tr>
          <th></th>
          <?php
          $counts = count($users);
             foreach ($users as $row) {
                echo '<th>'.$row->user.'</th>';
             }
          ?>
       </tr>
    </thead>

    <tbody>
       <?php
  $startC = 1;

foreach( $users as $row ) {
   echo '<tr class="tbody_tr_" id="'.$startC.'">';
   echo '<td>'.$users->user.'</td>';

   for($i=0; $i<$counts; $i++) {
      if($i == $startC)
      {
          echo '<td class="selectable addClass"><a href="#"></a></td>';
      }
      else
      {
          echo '<td class="selectable"><a href="#"></a></td>';
      }
   }
   $startC++;
   echo '</tr>';
}
       ?>
    </tbody>
</table>

答案 1 :(得分:0)

实际上,您可以再次迭代$users数组以生成列。它不会干扰外部循环,因为foreach对数组的副本进行操作。如果您跟踪每个循环中的索引,则可以在行索引和列索引匹配时添加该类。

foreach ($users as $rowindex => $row) {

    echo '<tr class="tbody_tr_" id="' . $startC++ . '">';
    echo '<td>' . $row->user . '</td>';

    foreach ($users as $columnindex => $column) {

        if ($columnindex == $rowindex) {
            echo '<td class="selectable newClass"><a href="#"></a></td>';
        } else {
            echo '<td class="selectable"><a href="#"></a></td>';
        }
    }

    echo '</tr>';
}

(这也意味着您无需事先count($users),除非您也将该计数用于其他用途。)

答案 2 :(得分:0)

由于您的问题被标记为javascript,我认为您必须考虑使用JS解决方案。它允许使用更简单的方法,用更简单的PHP代码构建表并让客户端完成工作。

self.friendly_name = fn