3

私はjQueryが初めてで、各ループで立ち往生しています。

オブジェクトを含む変数から値を取得しようとしていますが、を使用して印刷するとalert()、すべての結果が得られます。

しかし、それを HTML に出力しようとすると、この場合は 3 ではなく HTML に出力される最後の結果しか得られません。

$.each(playlist, function(index, item) {
    alert(item.title);
    $('.playlist1').text(item.title);
}); 
4

3 に答える 3

4

実際には、あなたは.each()ループで立ち往生しているのではなく、 .text().

.text()現在のテキストを新しいテキストに置き換えるため、この場合は最後のテキストのみが表示されます。

たぶん使用します.append()

次のように使用することもできます.text()

$('.playlist1').text(function(index, text){
  return text + item.title;
});

またはで.playlist1あると仮定すると、次のように追加できます。ulol

$('.playlist1').append('<li>'+item.title+'</li>');
于 2012-10-05T00:17:43.470 に答える
2

append次の代わりに関数を使用する必要がありますtext

$('.playlist1').append(item.title); 

text()要素のコンテンツを新しいコンテンツに置き換えます。 append()新しいコンテンツを要素の既存のコンテンツに追加します。

アップデート

各アイテムをリスト アイテムとして追加するには、次の操作を行います。

$('.playlist1').append('<li>' + item.title + '</li>'); 
于 2012-10-05T00:20:45.090 に答える
1

alert を使用すると、スクリプトの実行が中断される可能性があります。console.log() の使用を検討してください。

console.log(item.title);

each ループは foreach と同じように反復します。この場合、i は反復子で、item は値です。

$.each(playlist, function (i, item) {

反復すると、「class=playlist1」を含むすべての要素のテキストが に設定されitem.titleます。

 $('.playlist1').text(item.title);
}); 

構文的には何も間違っていませんが、論理的なエラーがあります。おそらくあなたはこれを試すことができます:

var fulltext = [];//initialize empty array
$.each(playlist, function (i, item) {
 fulltext.push(item.title);//iterate through playlist and collect titles
}); 
$('.playlist1').text(fulltext.join(" "));//join array with titles with a blank space
                                         //and put them in class playlist1

リストアイテムに対してこれを行うことができます:

var ul = document.createElement("ul");
$.each(playlist, function (i, item) {
 var thisLi = document.createElement("li");
 thisLi.innerHTML = item;
 ul.appendChild(thisLi);
}); 
$('.playlist1').append(ul);
于 2012-10-05T00:20:53.527 に答える