0

このようなデータがあるとしましょう

<data>
    <location>
        <type>main</type>
    </location>
    <location>
        <type>mailing</type>
    </location>
</data>

そして、次のようなコード

$('location',data).each(function(){

          var x='<table><tr><td>Type:</td><td>'+$(data).find('type').text()+'</td></tr></table>';
         $('#output').html(x);
});

これを実行して得た結果は

タイプ: メインメーリング

location 要素ごとにコードを再度実行する必要があるため、次のことを行わない理由がわかりません。

タイプ: メイン

タイプ: 郵送

4

3 に答える 3

2

以前の値を上書きし続けるためです。

.html()そこにあるコンテンツには追加されず、オーバーライドされます。

行だけでなく基本的な考え方でスピアテテーブルを作成しているのは奇妙です

var x='<table><tr><td>Type:</td><td>'+$(this).find('type').text()+'</td></tr></table>';
$('#output').append(x);

私はもっ​​と似たようなものを期待します

var table = "<table><tbody>";
$(data).find('location').each(function(){
   table += "<tr><th>Type:</th><td>'+$(this).find('type').text()+'</td></tr>';
});
table += "</tbody></table>";
$('#output').html(table);
于 2012-11-13T18:06:49.710 に答える
2

あなたは得ているようですType: mainmailing

現在のロケーションタグではなく、データ全体でそれを見つけているように見えるからです。

$(data).find('type').text()

察するに

$(this).find('type').text();

また、各ループ反復で値をオーバーライドし続けます。追加をループの外側に移動します。

var x = '<table>'
$('location','data').each(function(){
     x +='<tr><td>Type:</td><td>'+$(this).find('type').text()+'</td></tr>';   
});
x += '</table>'
$('#output').html(x);

フィドルをチェック

于 2012-11-13T18:08:05.440 に答える
2

append()の代わりに使用するhtml()必要があり、内部で現在処理しているアイテムを使用する必要がありますeach()

var data = "<data><location><type>main</type></location><location><type>mailing</type></location></data>";

$('location', data).each(function(index, item) {
    var x = '<table><tr><td>Type:</td><td>' + $(item).find('type').text() + '</td></tr></table>';
    $('#output').append(x);
});​

これが実際のデモです。

于 2012-11-13T18:09:41.357 に答える