我正在尝试根据用户完成的复选框选择从表中的特定行检索数据。
为此,我找到了两种方法eq(rowIndex)
和nth-child(rowIndex)
。但是,它仅在给定绝对值时才有效,而在动态时则无效。
尝试过以下但没有运气:
function getData()
{
var chkArr = document.getElementsByName('checkbox');
var checkedRecord = 0;
for(var i=0; i<chkArr.length; i++)
{
if(chkArr[i].checked)
{
checkedRecord = i;
$('#summaryTable > tbody > tr').eq('#checkedRecord').children('td').each(function(j)
//checkedRecord is the row index here
{
//fetch values from td
});
}
}
}
以下是我的html外观
<table>
<tr>
<td><input type="text" id="text1"></td>
<td>
<select>
<option value="opt1">Orange</option>
<option value="opt2">Green</option>
</select>
</td>
</tr>
<tr>..</tr>
对此有何建议?
答案 0 :(得分:1)
你想要这样的东西:
$('#summaryTable > tbody > tr').eq(i).children('td')
.each(function() { ... });
eq
的参数必须是数字。
也不需要checkedRecord
变量,它与i
相同。
答案 1 :(得分:1)
eq
方法需要整数值作为参数,但是您将选择器语法传递给此方法。在行上查看您的代码:
$('#summaryTable > tbody > tr').eq('#checkedRecord')....
您已将上面的checkedRecord
变量定义为var checkedRecord = 0;
。所以你需要修改那一行成为:
$('#summaryTable > tbody > tr').eq(checkedRecord)....
答案 2 :(得分:0)
试试这个,
var gridRows = $("#myTable tbody tr");
var qnt = gridRows[i].cells[2].childNodes[0].value;
如果您想要所有行数据,请使用此函数
function GridCount() {
var grid = $("#myTable tbody");
var gridRows = $("#myTable tbody tr");
var gridfootRows = $("#myTable tfoot tr");
var subTotal = 0;
var Id;
var Name;
for (var i = 0; i < gridRows.length; i++) {
if (isFireFox()) {
Id = gridRows[i].cells[0].childNodes[0].innerHTML;
Name = gridRows[i].cells[1].childNodes[0].innerHTML;
}
else {
Id = gridRows[i].cells[0].innerText;
Name = gridRows[i].cells[0].innerText;
}
var qnt = gridRows[i].cells[2].childNodes[0].value;
var price = gridRows[i].cells[3].childNodes[0].value;
var total = parseFloat(price * qnt).toFixed(2);
gridRows[i].cells[4].childNodes[0].innerHTML = total;
subTotal = parseFloat(subTotal) + parseFloat(total);
}
}
function isFireFox() {
return navigator.appName == "Netscape";
}
答案 3 :(得分:0)
我不确定你要求的是什么,但似乎你想要找到行中的选择值,这些值通过索引对应的复选框对应。这将允许您这样做:
function getData() {
var rows = $('#summaryTable > tbody > tr'), //cache rows for performance
values = []; //array of values to return
//iterate through all checkboxes
$('input[type=checkbox]').each(function (i) {
if(this.checked) {
//if checkbox is checked, find select and get value, then add to values array
values.push(rows.eq(i).find('select').val());
}
});
return values;
}