我是jQuery的新手,我已经陷入了每个循环。
我正在尝试从带有对象的变量中获取值,当我使用alert()
打印它时,我得到了所有结果。
但是当我尝试将其打印到HTML时,我只将最后的结果打印到HTML而不是3,在这种情况下。
$.each(playlist, function(index, item) {
alert(item.title);
$('.playlist1').text(item.title);
});
答案 0 :(得分:4)
实际上,您并没有停留在.each()
循环中,而是卡在.text()
上。
.text()
用新文本替换当前文本,因此在这种情况下您只能看到最后一个文本。
也许使用.append()
。
您也可以这种方式使用.text()
:
$('.playlist1').text(function(index, text){
return text + item.title;
});
假设.playlist1
是ul
或ol
,您可以这样添加:
$('.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);