0

名前の値とスコアの値で構成される応答を受け取るために JQuery を使用しようとしています。このコードは、応答名を、スコアを表示するテーブル内の名前と照合し、その名前テーブル行のスコア セルを更新することになっています。問題は、テーブル要素を選択する方法がわからないことです。

これは機能です:

function rollBall() {
var pins = $('#pins').val();
        $.ajax({
            type: "POST",  
            url: "/ajaxjqjsbowling/play.htm",  
            data: "pins=" + pins,  
            success: function(response){
                if(response.status == "SUCCESS"){
                    var cname = response.result.currPlayName;
                    var cscore = response.result.currPlayScore;

                $("td#plName [name = cname] + td#plScore").replaceWith('' + cscore);
            }

        },  
        error: function(e){  
          alert('Error: ' + e);  
        }  
      });
}

そして、これはテーブルコードです:

<table id = "playerslist">
    <c:forEach var="player" items="${players}">
    <tr id = "htmlplayerno"><td> ${player.htmlPlayerNo}:</td><td id = "plName">${player.name}:</td><td id = "plScore" >0</td></tr>
    </c:forEach>
</table> 
<table>

読んでくれてありがとう。

4

3 に答える 3

0

in Html id は一意です。複数の tr がある場合は、class を使用する必要があります。

<tr id="${player.htmlPlayerNo}" >
  <td> ${player.htmlPlayerNo}:</td>
  <td class="plName" >${player.name}:</td>
  <td class="plScore" >0</td>
</tr>

それから

$("#" + ${player.htmlPlayerNo} + " td.plScore").html(cscore);
于 2013-04-04T10:09:25.280 に答える
0

id は一意であるため、次のようにしてください。

$("#plScore").replaceWith('' + cscore);
于 2013-04-04T09:54:39.920 に答える
0

文字列を連結する必要があります。それ以外の場合は文字列になり"td#plName [name = cname] + td#plScore"ます。id複数のプレイヤーが存在し、 は一意である必要があるため、クラスも使用する必要があります。

success: function(response){
    if (response.status == "SUCCESS") {
        var cname = response.result.currPlayName;
        var cscore = response.result.currPlayScore;

        $("td.plName:contains('" + cname + "') + td.plScore").html(cscore);
    }

HTML

<table id = "playerslist">
    <c:forEach var="player" items="${players}">
    <tr class="htmlplayerno"><td> ${player.htmlPlayerNo}:</td><td class="plName">${player.name}:</td><td class="plScore" >0</td></tr>
    </c:forEach>
</table> 

代替ソリューション

これがうまくいくかもしれない別の方法です。

HTML

<tr id="${player.name}" >
    <td class="plNo">${player.htmlPlayerNo}:</td>
    <td class="plName">${player.name}:</td>
    <td class="plScore">0</td>
</tr>

JS

$("#" + cname + " .plScore").html(cscore);
于 2013-04-04T09:54:53.207 に答える