【问题标题】:How to access values of cells within a row of a table which has been checked by a checkbox in Javascript?如何访问已由 Javascript 中的复选框选中的表格行中的单元格值?
【发布时间】:2025-12-04 23:15:01
【问题描述】:

我想知道是否有人可以帮助我完成这项工作。

我正在使用 HTML 创建一个表格,该表格至少有 1 行但没有最大行数 - 因为它们可以由用户添加/删除 - 4 列,第 1 列包含一个复选框,最后 2 列包含 drop下拉菜单。

我希望只有在选中该行的复选框时才能将这些菜单的值存储在数组中。例如,如果第一行有 1 和 A 作为它的下拉值,第二行有 2 和 B。如果只检查了第 1 行,则数组应该只包含 [1,A]。相反,我的包含所有值,包括未检查的值,即 [1,A,2,B]。

我的Javascript函数和html表格代码如下:

function calculate(textID) {
  var table = document.getElementById('course'); //id of table
  var rowCount = table.rows.length;
  var array = []; //array to hold the values
  var c = 0;

  dmenus = document.getElementByTagName("select"); //get the drop down menus

  for (var a = 1; a < rowCount; i++) { //a = 1 as the 1st row contains column headings
    var row = table.rows[a];
    var check = row.cells[0].childNodes[0];
    if (null != check && true == check.checked) {
      for (var b = 0; b < dmenus.length; b++) {
        val = dmenus[b].options[dmenus[b].selectedIndex].value;
        array[c] = val; //set index of array to equal value of dropdown box
        c++;
      }
    } else {
      b++;
    }
  }
 
<table id="course">
  <tr>
    <td><input type="checkbox" name="ucheck" id="ucheck" onclick="checkAll('course')" /></td>
    <th style="color:white">Course Title</th>
    <th style="color:white">Credits</th>
    <th style="color:white">Grade</th>
  </tr>
  <tr>
    <td><input type="checkbox" name="tick" id="tick" /></td>
    <td><input type="text" /></td>
    <td>
      <select name="credits" id="credits">
                    <option...</select></td>
    <td>
      <select name="grade" id="grade">
                    <option...</td>
 </table>

它只适用于第一行,但如果有超过 1 行,它就不会做它应该做的事情。我正在开发的编码平台似乎不支持 JQuery,因此非常感谢 Javascript 代码。

【问题讨论】:

    标签: javascript checkbox html-table


    【解决方案1】:

    终于让它工作了,重新排列了一些代码。可能有一种更有效的方法,但是它对我有用:D

    var array = [];
    var narray = [];
    var a = 0;
    var b = 0;
    var c = 0;
    
    ddownselects = document.getElementsByTagName("select");
    
    //get all elements into one array
    for (var j = 0; j < ddownselects.length; j++) {
      val = ddownselects[j].options[els[j].selectedIndex].value;
      array[a] = val;
      a++;
    }
    
    var rlen = array.length / 2; //number of rows
    for (var i = 1; i <= rlen; i++) {
      var row = table.rows[i];
      var check = row.cells[0].childNodes[0];
      if (check.checked) {
        narray[b] = array[c]; //set array values to new array only if that row is checked
        b++;
        c++;
        narray[b] = array[c];
        b++;
        c++;
      } else {
        c += 2; //if not checked, got to next row's values
      }
     
    <table id="course">
      <tr>
        <td><input type="checkbox" name="ucheck" id="ucheck" onclick="checkAll('course')" /></td>
        <th style="color:white">Course Title</th>
        <th style="color:white">Credits</th>
        <th style="color:white">Grade</th>
      </tr>
      <tr>
        <td><input type="checkbox" name="tick" id="tick" /></td>
        <td><input type="text" /></td>
        <td>
          <select name="credits" id="credits">
                        <option...</select></td>
        <td>
          <select name="grade" id="grade">
                        <option...</td>

    【讨论】:

      最近更新 更多