我有 this code ,它使用getJSON获取随机文本链接。它一次拾取一个随机项目。我想知道如何选择多个不同的项目并在#randomkeyword
中显示它们。我能想到的就是设置两次脚本,但我认为它可能有机会拿起相同的项目,有没有办法做到这一点?
jQuery.getJSON('random.json', function(data) { //Ajax call
var item = data.link[Math.floor(Math.random()*data.link.length)];
jQuery('<a title="' + item.des + '" href="http://' + item.url + '">'+ item.title +'</a>').appendTo
('#randomkeyword');
});
JSON文件:
{"link":[{"title":"XXXX","url":"google.com","des":"light"},{"title":"CCCCCCC","url":"yahoo.com","des":"dark"},{"title":"DDDDDDDD","url":"song.com","des":"light"},{"title":"CCCCCCCCCCCCCCC","url":"googlemap.com","des":"normal"},{"title":"RRRRRRRRRRRRRRR","url":"fun.com","des":"halo"}]}
答案 0 :(得分:1)
为了避免重复,你可以“洗牌”列表,然后从头开始循环。
答案 1 :(得分:0)
您可以检查第二项是否与第一项相同。如果是这样,您可以选择其他随机项目。
jQuery.getJSON('random.json', function(data) { //Ajax call
var item = data.link[Math.floor(Math.random()*data.link.length)];
var item2=item;//set second item same as first item to access the while loop
while(item==item2){
item2 = data.link[Math.floor(Math.random()*data.link.length)];
}
jQuery('<a title="' + item.des + '" href="http://' + item.url + '">'+ item.title +'</a>').appendTo
('#randomkeyword');
});
//do the same for item2
答案 2 :(得分:0)
所以,我认为你可以存储列表,然后根据需要多次遍历它,splice
出去选择的那些(以避免重复),然后在每个元素上运行jQuery在结果数组中。请注意,此会修改返回的数组,因此如果您需要完整,请先复制它。
例如:
var data = ['one', 'two', 'three'];
var numOfLinks = 2;
var result = [];
for(i = 0; i < numOfLinks; i++) {
var index = Math.floor(Math.random()*data.length);
var link = data[index];
data.splice(index,1);
result.push(link);
}
// iterate over result, doing your jQuery function over each element