0

ユーザーが行ったチェック ボックスの選択に基づいて、テーブル内の特定の行からデータを取得しようとしています。

このために、私は と の 2 つの方法を見つけまし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

次のようなものが必要です。

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

への引数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 に答える