使用foreach循环打印所有结果

时间:2012-10-05 00:16:02

标签: jquery

我是jQuery的新手,我已经陷入了每个循环。

我正在尝试从带有对象的变量中获取值,当我使用alert()打印它时,我得到了所有结果。

但是当我尝试将其打印到HTML时,我只将最后的结果打印到HTML而不是3,在这种情况下。

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

3 个答案:

答案 0 :(得分:4)

实际上,您并没有停留在.each()循环中,而是卡在.text()上。

.text()用新文本替换当前文本,因此在这种情况下您只能看到最后一个文本。

也许使用.append()

您也可以这种方式使用.text()

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

假设.playlist1ulol,您可以这样添加:

$('.playlist1').append('<li>'+item.title+'</li>');

答案 1 :(得分:2)

您需要使用append功能而不是text

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

text()用新内容替换元素的内容。 append()将新内容附加到元素的现有内容。

<强>更新

要将每个项目添加为列表项,请执行以下操作:

$('.playlist1').append('<li>' + item.title + '</li>'); 

答案 2 :(得分:1)

使用alert可以中断脚本的执行,请考虑使用console.log()

console.log(item.title);

每个循环都像foreach一样迭代,在这种情况下,我是迭代器,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);