我在使用$ .each的计数器时遇到问题我正在获取JSON提要,然后想要循环结果的“标题”。如果我使用数字然后它可以工作,但当我尝试使用计数器'即var i = 1'时,它不起作用。我认为这与未正确传递给函数的变量有关吗?
由于
var i = 1;
$.getJSON("http://www.aaronlumsden.com/api/?json=get_category_posts&slug=portfolio",function(data) {
$.each(data, function(i) {
$('#navScroller').append('<li><a rel=""href="" title="">'+data.posts[i].title+'</a></li>');
i++;
});
});
答案 0 :(得分:4)
即使在修复阴影问题时,我也不认为您的代码会像预期的那样工作。
data
是一个对象,$.each()
[docs]遍历对象的每个属性。到目前为止,我可以看到它有5个属性(这里是JSON):
{
"status":"ok",
"count":8,
"pages":1,
"category":{...},
"posts": [...]
}
如果这些是唯一的,$.each()
将调用回调五次,这意味着您将获得前五个帖子的标题。或者如果帖子少于5个,您将收到错误。
我认为您实际上想要从响应中迭代所有帖子,这将是:
var $scroller = $('#navScroller');
$.each(data.posts, function(i, post) {
$scroller.append('<li><a rel=""href="" title="">'+post.title+'</a></li>');
});
如果你有很多帖子,那么事先创建完整的HTML字符串也是有意义的,只需要调用.append()
一次,例如:
$('#navScroller').append($.map(data.posts, function(post) {
return '<li><a rel=""href="" title="">'+post.title+'</a></li>';
}).join('')); // not sure if you actually need `.join`
答案 1 :(得分:2)
var k = 1;
$.getJSON("http://www.aaronlumsden.com/api/?json=get_category_posts&slug=portfolio",function(data) {
$.each(data, function(i) {
$('#navScroller').append('<li><a rel=""href="" title="">'+data.posts[i].title+'</a></li>');
k++;
});
// Use k here
});
答案 2 :(得分:0)
在each
- 函数中。您声明参数i
。这会覆盖第一行的var i = 1
。删除i
中的function(i)
,我认为没问题。
答案 3 :(得分:-1)
var k = 1;
$.getJSON("http://www.aaronlumsden.com/api/?json=get_category_posts&slug=portfolio",function(data) {
$.each(data.posts, function(i) {
$('.nav').append('<li><a rel=""href="" title="">'+data.posts[i].title+'</a></li>');
k++;
});
// Use k here
});
我在那个网站上试过了。它正在运作