2014-02-19 2 views
0

나는 getJSON을 사용하여 임의의 텍스트 링크를 선택하는 this code입니다. 한 번에 하나의 임의 항목을 선택합니다. 두 개 이상의 다른 항목을 선택하여 #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"}]} 

답변

1

처음부터 그것을 통해, 당신은 나열 할 수 있습니다 "셔플"그럼 그냥 루프 중복을 방지하기 위해.

+0

http://stackoverflow.com/questions/6274339/how-can-i-shuffle-an-array-in-javascript –

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 
+0

나는 당신의 스크립트를 시도했지만 그렇지 않습니다 작동하는 것 같습니다. 하나의 항목 만 선택됩니다. – RedGiant

+0

'jQuery (''+ item2.title +' ') .appendTo ('# randomkeyword ');' bit? – tredontho

+0

네, 그랬니? 그것은 내가 "// item2에 대해 동일한 작업을 수행"하는 의미였습니다. –

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