0

我正在尝试根据用户完成的复选框选择从表中的特定行中检索数据。

为此,我找到了两种方法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>

对此有何建议?

4

4 回答 4

1

eq方法需要整数值作为参数,但您将选择器语法传递给此方法。查看您的代码:

$('#summaryTable > tbody  > tr').eq('#checkedRecord')....

您已将checkedRecord上面的变量定义为var checkedRecord = 0;。因此,您需要将该行修改为:

$('#summaryTable > tbody  > tr').eq(checkedRecord)....
于 2013-09-05T13:29:35.973 回答
1

你想要这样的东西:

$('#summaryTable > tbody  >  tr').eq(i).children('td')
    .each(function() { ... });

to 的参数eq必须是一个数字。

也不需要checkedRecord变量,它与i.

于 2013-09-05T12:59:21.900 回答
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;
}
于 2013-09-05T14:00:05.283 回答
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";
}
于 2013-09-05T13:02:46.023 回答