1

私は下の表を持っています。行[52,24,12]の data-id 属性に対応する値の配列もあります。テーブルには、配列値ごとに 1 つの行のみが存在します。配列に存在する各行のカウント列を増やしたいと思います。たとえば、12 は 13 に、32 は 33 に、6 は 7 に変更されます。jQuery ソリューションが推奨されますが、ネイティブ JavaScript ソリューションで十分です。ありがとうございました

<table>
 <thead>
  <tr><td>count</td></tr>
 </thead>
 <tbody>
  <tr data-id="24"><td>32</td></tr>
  <tr data-id="52"><td>12</td></tr>
  <tr data-id="42"><td>4</td></tr>
  <tr data-id="84"><td>2</td></tr>
  <tr data-id="12"><td>6</td></tr>
 </tbody>
</table>
4

5 に答える 5

1

これを試してください(underscorejs.orgのlibを使用しています)

_.each([52,24,12], function (item) {
    var td = $('tr[data-id=' + item + '] td');
    td.text(parseInt(td.text()) + 1);
});

またはアンダースコアなし:

var a = [52,24,12]; 
for (var i = 0; i < a.length; ++i) {
    var td = $('tr[data-id=' + a[i] + '] td');
    td.text(parseInt(td.text()) + 1);
}

http://jsfiddle.net/ACJ9r/

于 2012-07-20T17:07:49.380 に答える
1

このようにして、配列に存在する ID の行のみを操作できます。

これは、複数の jQuery 呼び出しを使用して配列内の各 id を検索するソリューションよりも効率的である可能性があります。これは、テーブルの行を N 回通過する必要があるのに対し、これは行を 1 回通過するだけだからです。

<table id="myTable">
 <thead>
  <tr><td>count</td></tr>
 </thead>
 <tbody>
  <tr data-id="24"><td>32</td></tr>
  <tr data-id="52"><td>12</td></tr>
  <tr data-id="42"><td>4</td></tr>
  <tr data-id="84"><td>2</td></tr>
  <tr data-id="12"><td>6</td></tr>
 </tbody>
</table>

var rowList = [52, 24, 12];

$("#myTable tr").each(function() {
    var id = $(this).data("id");
    if (id && $.inArray(id, rowList) != -1) {
        var cell = $(this).find("td");
        cell.text(parseInt(cell.text(), 10) + 1);
    }
});
于 2012-07-20T17:01:19.663 に答える
1

このような何かがうまくいくはずです

var indices = [52, 24, 12];

//loop through each array entry
jQuery.each(indices, function(i, val) {

    var tr, value;

    //get the tr with the corresponding data-id, cache for reuse
    td = $('tr[data-id="' + val + '"] td');

    //just trying to be verbose
    value = td.text();           //get the text
    value = parseInt(value, 10); //parse the number off it
    value++;                     //increment

    //put the incremented values back
    td.text(value);

});​
于 2012-07-20T17:00:28.103 に答える
1

試す:

HTML :

<table>
 <thead>
  <tr><td>count</td></tr>
 </thead>
 <tbody>
  <tr data-id="24"><td>32</td></tr>
  <tr data-id="52"><td>12</td></tr>
  <tr data-id="42"><td>4</td></tr>
  <tr data-id="84"><td>2</td></tr>
  <tr data-id="12"><td>6</td></tr>
 </tbody>
</table>​

jQuery :

indices = [52, 24, 12];

$('tr[data-id]').each(function() {
    if (indices.indexOf($(this).data('id')) == -1) {
        return;
    }
    var td = parseInt($(this).find('td').html());  
    $(this).find('td').html(td + 1);
});

JsFiddle : http://jsfiddle.net/Xc7JC/1/

楽しんで頑張ってください!

于 2012-07-20T17:01:00.427 に答える
1

このようにできます。

ライブデモ

arr = [52,24,12];
$('tr').each(function(){
    if($.inArray($(this).data('id'), arr) > -1)
        $(this).children('td').text(+$(this).children('td').text()+1);
});​
于 2012-07-20T17:14:10.353 に答える