从同一行的 table 个数据中获取元素

getElement from table data in same row

我使用 javascript 和 html5 制作了一个网页。它就像一个自由板。

但是有些问题我无法解决。

  1. Table 第一行有选择器和按钮,其他有勾选 第一个 td 的框和第二个 td 的数字。
  2. 如果勾选了Checkbox,写的次数会加到 数组。
  3. 如果我单击按钮,将执行选定的工作。

我是这么想的

那么,我如何得到这些数字?

table 的行是动态的,所以我无法正确设置。

这是我的选择器和执行按钮的代码:

<tr class="taskRow">
  <td colspan="8" style="padding-bottom:10px;">
      <select>
      <option value="delete">writing delete</option>
      <option value="articleBan">writing ban</option>
      <option value="writerBan">writer ban</option>
      </select>
      <input type="submit" value="execute">
  </td>
</tr>

这是我的 table 一行的代码。 Table 由 for 循环

<tr class="articleData">
  <td><input type="checkbox" name="selectData" class="tableData" style="display:table; margin:auto;"></td>
  <td style="text-align:center;" class="tableData"><%=item.num%></td>
  <td class="contentData" class="tableData"><div><a href="/wRead/<%=page%>/<%=item.num%>"><%=item.content%></a></div></td>
  <td style="text-align:center;" class="tableData"><%=item.writer%></td>
  <td style="text-align:center;" class="tableData"><%=item.hit%></td>
  <td style="text-align:center;" class="tableData"><%=item.regDate%></td>
  <td style="text-align:center;" class="tableData"><%=item.goodCount%></td>
  <td style="text-align:center;" class="tableData"><%=item.replyCount%></td>
</tr>

我能想到的一件事是我为每一行创建一个函数并将其应用于 onclick 属性。 但是这种方式太复杂了,我觉得不对。

请给我一些想法...

<script>
    function test(o) {
        if (o.checked) {
            // add "num" class to your number td
            console.log(o.parentNode.parentNode.querySelector(".num").innerHTML);
        }
    }
</script>
<table>
<tr class="taskRow">
  <td colspan="8" style="padding-bottom:10px;">
      <select>
      <option value="delete">writing delete</option>
      <option value="articleBan">writing ban</option>
      <option value="writerBan">writer ban</option>
      </select>
      <input type="submit" value="execute">
  </td>
</tr>
<tr class="articleData">
  <!--append the index to the name-->
  <td><input type="checkbox" name="selectData1" class="tableData" style="display:table; margin:auto;" onchange="test(this)";></td>
  <!--add "num" class to your number td-->
  <td style="text-align:center;" class="tableData num">1</td>
  <td class="contentData" class="tableData">1a</td>
  <td style="text-align:center;" class="tableData">1b</td>
  <td style="text-align:center;" class="tableData">1c</td>
  <td style="text-align:center;" class="tableData">1d</td>
  <td style="text-align:center;" class="tableData">1e</td>
  <td style="text-align:center;" class="tableData">1f</td>
</tr>
<tr class="articleData">
  <td><input type="checkbox" name="selectData2" class="tableData" style="display:table; margin:auto;" onchange="test(this)";></td>
  <td style="text-align:center;" class="tableData num">2</td>
  <td class="contentData" class="tableData">2a</td>
  <td style="text-align:center;" class="tableData">2b</td>
  <td style="text-align:center;" class="tableData">2c</td>
  <td style="text-align:center;" class="tableData">2d</td>
  <td style="text-align:center;" class="tableData">2e</td>
  <td style="text-align:center;" class="tableData">2f</td>
</tr>
<tr class="articleData">
  <td><input type="checkbox" name="selectData3" class="tableData" style="display:table; margin:auto;" onchange="test(this)";></td>
  <td style="text-align:center;" class="tableData num">3</td>
  <td class="contentData" class="tableData">3a</td>
  <td style="text-align:center;" class="tableData">3b</td>
  <td style="text-align:center;" class="tableData">3c</td>
  <td style="text-align:center;" class="tableData">3d</td>
  <td style="text-align:center;" class="tableData">3e</td>
  <td style="text-align:center;" class="tableData">3f</td>
</tr>
</table>

如果你的号码是 identity.This 是我的想法(用 jQuery)。希望对你有帮助。

var numbers= [];
$("input.tableData").on('change',function(){
    var number = $(this).closet('tr').children('td')[2].html();
   if($(this).is(":checked")){
     //add number to array
     numbers.push(number);
   }
   else{
     //remove this number from array
      var indx = number.indexOf(number);
      numbers.splice(indx, 1);
   }
});