繁体   English   中英

如何访问已被Java复选框选中的表行中单元格的值?

[英]How to access values of cells within a row of a table which has been checked by a checkbox in Javascript?

我想知道是否有人可以帮助我解决这个问题。

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

我希望仅在已选中该行的复选框的情况下才能将这些菜单的值存储在数组中。 例如,如果第一行具有1和A作为其下拉值,第二行具有2和B。如果仅检查了第一行,则数组应仅包含[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> 

它仅适用于第一行,但如果有多于一行,则不会执行应有的功能。 我正在使用的编码平台似乎不支持JQuery,因此将非常感谢Javascript代码。

终于让它工作了,重新整理了一下代码。 可能有一种更有效的方法,但是它对我有用: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> 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM