【发布时间】:2016-02-14 04:42:21
【问题描述】:
我正在尝试为一个学校项目制作一种新闻专线,但我在使用 jQuery 的 .each() 函数时遇到了一些问题。我正在尝试找到一种方法来跳过循环中的每个第二个数组元素。
基本上,我有来自 NY Times API 的数据,得到标题和摘要,然后将它们推送到一个数组中,然后我每隔一段时间循环一次并制作动画。
我的问题是,如果不将循环再次移动到 index[1],我似乎无法找到获取 Title + Abstract (Index[0]+[1]) 的方法。现在我知道在 Javascript 中你可以简单地使用 for (i=0; i < array.length; i+2) 并因此跳过每个第二个数组元素,但我没有任何运气来整合它。有什么建议? :)
$(document).ready(function() {
var newsWire = [];
function loadNewswire() {
return $.getJSON('http://api.nytimes.com/svc/news/v3/content/all/all.json',
{'api-key': 'XXXXXXXXXXXXXXXXXXX'},
function(data) {
console.log(data)
var newsWireTemp = [];
for (var i = 0; i < data.results.length; i++) {
var breakingNews = data.results[i];
var breakingTitle = breakingNews.title.toUpperCase();
var breakingAbstract = breakingNews.abstract;
newsWireTemp.push(breakingTitle);
newsWireTemp.push(breakingAbstract);
}
newsWire = newsWireTemp;
});
}
loadNewswire().done(function () {
var items = newsWire;
$text = $('#newswiretxt span'),
delay = 10; //seconds
function loop (delay) {
$.each(items, function (i, elm){
$text.delay(delay*1E3).fadeOut();
$text.queue(function(){
$text.html(items[i]+ ": " +items[i+1]);
$text.dequeue();
});
$text.fadeIn();
$text.queue(function(){
if (i == items.length -1) {
loop(delay);
}
$text.dequeue();
});
});
}
console.log(items.length);
loop(delay);
});
});
【问题讨论】:
-
好吧,您似乎可以完全控制如何将数据推送到数组中...为什么不直接将您的
breakingNews项推送到数组中呢?那么你就不必担心以奇怪的方式增加索引...... -
"似乎无法找到一种方法来获取 Title + Abstract (Index[0]+[1]) 而无需循环再次移动到 index[1]"
$text.html(items[i]+ ": " +items[i+1]);是应该设置[i + 1]的部分吗?如果items[i+1]是undefined,预期的结果是什么?
标签: javascript jquery arrays loops each