2017-12-04 9 views
-1

jQueryスクリプトに問題があります。私は各trのための簡単なカウントループを作ろうとしています。次のようなテーブルがあり、2番目のtdを選択し、2を掛けて3番目のtdに加算し、4番目のtdに結果を表示したいとします。jQueryのtdからの値の計算

https://codepen.io/adeowsky/pen/YEgVKG

私は以下のような各ループのためにそれを作るしようとしている - >

<script> 
(function($) { 
    $('.sp-league-table tbody tr').each(function() { 
     var pct = this.find('.data-pct').text(); 
     console.log(pct); 
     //var pct = $('').hasClass('data-pct').text(); 
     //console.log(pct); 
     var winy = $('.data-w').text(); 
     var losy = $('.data-l').text(); 

     /*var pkt = (winy*2) + (losy*2); 
     $('.data-pct').text(pkt);*/ 
    }); 
})(jQuery); 
</script> 

しかし、理由がある場合、それは、私のために動作しませんか?

+0

どこ.SP-リーグ-table' 'のですか?あなたのhtml上ではありません。 – Eddie

+0

行の要素ではなく、すべての要素を選択しているためです。 – epascarello

答えて

0

は、あなたのテーブルには、あなたが

  • あなたが明示的に文字列値を解析する必要がある特定の行のセルをターゲットにしていない
  • 必要なクラスを持っていない

    • 問題がいくつかあります整数
    • あなたは計算を行うビットをコメントアウトしました:
    更新210
    $(function(){ 
    
    $('.sp-league-table tbody tr').each(function() { 
        var pct = $('.data-pct',this).text(); 
    
        var winy = parseInt($('.data-w',this).text(),10); 
        var losy =parseInt($('.data-l',this).text(),10); 
    
        var pkt = (winy*2) + (losy*2); 
        $('.data-pct',this).text(pkt); 
    }); 
    }) 
    

    https://codepen.io/anon/pen/NwJjaO

    ライブ例:

    $(function(){ 
     
        
     
    $('.sp-league-table tbody tr').each(function() { 
     
        var pct = $('.data-pct',this).text(); 
     
        
     
        var winy = parseInt($('.data-w',this).text(),10); 
     
        var losy =parseInt($('.data-l',this).text(),10); 
     
    
     
        var pkt = (winy*2) + (losy*2); 
     
        $('.data-pct',this).text(pkt); 
     
    }); 
     
    })
    table, tr, td, th { 
     
        border: 1px solid #000; 
     
        border-collapse: collapse; 
     
        padding: 10px; 
     
    }
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
     
    <table class="sp-league-table"> 
     
        <thead> 
     
        <tr> 
     
         <th>Name</th> 
     
         <th>W</th> 
     
         <th>L</th> 
     
         <th>PCT</th> 
     
        </thead> 
     
        <tr> 
     
        <td>Name 1</td> 
     
        <td class="data-w">12</td> 
     
        <td class="data-l">0</td> 
     
        <td class="data-pct">x</td> 
     
        </tr> 
     
        <tr> 
     
        <td>Name 2</td> 
     
        <td class="data-w">9</td> 
     
        <td class="data-l">3</td> 
     
        <td class="data-pct">x</td> 
     
        </tr> 
     
    </table> 
     
    
     
    <table class="sp-league-table"> 
     
        <thead> 
     
        <tr> 
     
         <th>Name</th> 
     
         <th>W</th> 
     
         <th>L</th> 
     
         <th>PCT</th> 
     
        </thead> 
     
        <tr> 
     
        <td>Name 1</td> 
     
        <td class="data-w">12</td> 
     
        <td class="data-l">0</td> 
     
        <td class="data-pct">24</td> 
     
        </tr> 
     
        <tr> 
     
        <td>Name 2</td> 
     
        <td class="data-w">6</td> 
     
        <td class="data-l">5</td> 
     
        <td class="data-pct">17</td> 
     
        </tr> 
     
    </table>

  • +0

    テーブルを入力するときにクラスを見逃しました。なぜなら、それは単なる例なので、何が起きているか検査していたので引用符付きのコードがそこにありました。 それはうまくいきました、私は特定の行に到達できませんでした、それは問題でした。今私には明らかです、ありがとう! – adeowsky

    1

    クラスのすべての要素を選択していますが、現在の行の要素は選択していません。

    var tr = $(this); 
    var pCell = tr.find(".data-pct") 
    var wCell = tr.find('.data-w') 
    var lCell = tr.find('.data-l') 
    
    関連する問題