2012-10-05 39 views
3

我是jQuery的新手,每次循环都卡住了。使用foreach循环打印所有结果

我试图从对象的变量得到的值,当我打印使用alert(),我得到的所有结果。

但是,当我试图把它打印到我只得到最后的结果输出到HTML而不是3的HTML,在这种情况下。

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

回答

4

其实,你不是停留在.each()循环,你被困在.text()

.text()替换新文本的当前文本,所以你永远只看到在这种情况下的最后一个。可能使用.append()

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

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

假设.playlist1ulol,可以追加到它是这样的:

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

呵呵,谢谢!你必须每天都要学习新东西,而且我只学过一门!谢谢! :) – blytung

+1

ahh,所以它是索引,thanx为了让它感觉出来。 :) –

+0

谢谢你们,它工作得很好。但正如我之前说过的,我对这种类型的东西不熟悉。如果我想将所有结果循环到列表项中,我该怎么做?不要真的让它工作。 – blytung

2

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

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

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

更新

在每个项目添加为列表项做到这一点:

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

谢谢你们,它工作得很好。但正如我之前说过的,我对这种类型的东西不熟悉。如果我想将所有结果循环到列表项中,我该怎么做?不要真的让它工作。 – blytung

+0

@blytung,你会使用'append('

  • '+ item.title +'
  • ')' – ahren

    +1

    我已经更新了我的答案,显示将内容添加为列表项目。 –

    1

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

    console.log(item.title); 
    

    每个循环迭代非常像foreach,在这种情况下,我是迭代器,并且项目是值

    $.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); 
    
    +0

    @blytung - 查看创建列表的编辑。 –