1

id = mainのテーブルがあります...各行から2つのセルを一緒に追加し、別の行などでも同じことを実行しようとしていますが、最初の行ではすべての結果セルを追加できました。次の行でも同じです。たとえば、テーブル内のすべてのセルに対して'test' = 102.9 ...ところで、調査中.each()ですが、実装方法がわかりません。

<tr id='main'>
<td class='rtng'>100</td>
<td class='win'>2.90</td>
<td class='test'></td></tr>

<tr id='main'>
<td class='rtng'>95</td>
<td class='win'>4.25</td>
<td class='test'></td></tr>

これが私のjQueryです

$(document).ready(function() {
    var num1 = $(".rtng").html();
    var num2 = $(".win").html();
    var result = parseFloat(num1) + parseFloat(num2);
    $(".test").html(result);
});​

別の試み

$(document).ready(function() {
    $('tr.rtng').each(function() {
        var num1 = $(".rtng").html();
        var num2 = $(".win").html();
        var result = parseFloat(num1) + parseFloat(num2);
        $(".test").html(result);
    });
});​

どんな助けでも素敵でしょう:)

4

3 に答える 3

3

まず、HTML が有効ではありません。要素がなく<table>、同じ ID が 2 回使用されています。ID は一意です。HTML を次のようにします。

<table id="tableMain">
    <tr>
        <td class='rtng'>100</td>
        <td class='win'>2.90</td>
        <td class='test'></td>
    </tr>
    <tr>
        <td class='rtng'>95</td>
        <td class='win'>4.25</td>
        <td class='test'></td>
    </tr>
</table>

そしてjQueryで:

$(document).ready(function() {         
    $('#tableMain tr').each(function() {
        var $this = $(this);
        $this.find('.test').text(parseFloat($this.find('.rtng').text()) + parseFloat($this.find('.win').text()));
    });
});​
于 2012-09-25T11:14:01.277 に答える
0

正しい値を計算する関数を.test呼び出して渡すことで、すべての要素を選択してその内容を設定できます。.html()

$(".test").html(function () {
    // `this` refers to the current `.test` element...
    var num1 = parseFloat($(this).siblings(".rtng").html()),
        num2 = parseFloat($(this).siblings(".win").html());
    return num1 + num2;
});​​​​​

これが実際のです。

補足: 他の人が述べたように、id属性の値はドキュメント内で一意でなければなりません。

于 2012-09-25T11:08:30.017 に答える
0

まず、同じ ID を 2 回使用したため、問題が発生しました。行に一意の ID を与えるか、それらをクラスに変更します。あなたがクラスに行くと仮定すると、私は次のようなことをします:

$('tr.main').each(function() {
    var num1 = $(this).children('.rtng').text();
    var num2 = $(this).children('.win').text();
    var result = parseFloat(num1) + parseFloat(num2);
    $(this).children('.test').text(result);
});

行のコンテキストで各 tds を選択する必要があるため、子関数が機能します。

于 2012-09-25T11:14:36.733 に答える