2013-08-28 2 views
0

죄송합니다. 게시물이 분명하지 않은 경우 최선을 다해 설명하겠습니다. 저는 온라인으로 사회 심리학 실험을하고 있습니다. 존 (John), 마이크 (Mike), 알렉스 (Alex) 등 무작위로 다른 이름을 선택할 수있는 기능이 필요합니다.임의 항목 및 링크

function swapImages(){ 
    var $active = $('#myGallery .active'); 
    var $next = ($('#myGallery .active').next().length > 0) ? $('#myGallery.active').next() : $('#myGallery img:first'); 
    $active.fadeOut(function(){ 
    $active.removeClass('active'); 
    $next.fadeIn().addClass('active'); 
    });}) 

이 코드와 내가 키를 누를 때 이름을 변경할 수 있었다 "쥐덫"라이브러리를 사용하여 : 도움을 찾고있는 동안 온라인이 코드를 발견했다. 그러나 나는 이름을 무작위로 나타낼 수있는 방법에 대한 단서가 없다. (이는 코드에있는 순서가 아니라 내가 할 때마다 다름). 그리고 40 개의 다른 이름 뒤에 다른 html 페이지로 링크해야합니다.

도움을 주셔서 감사합니다, 내 마지막 게시물이 혼란 경우 미안 .... 이것은 프로그래밍 :

올드 게시물에 대한 내 첫 번째 방법입니다 다음 프로그래밍의 세계에 임 아주 새로운, 내가 도움이 필요 이 코드는 내가 쓴 순서가 아닌 임의의 항목을 선택합니다. 또한, 나는 웹에서 이것을 얻었고 40 개 항목을 끝내고 antoher 페이지에 연결해야합니다. 도움을

감사

답변

0

경우 임의의 이름을 선택하는 간단한 필요 - 배열에서 선택 인 Math.random 가장 간단한 방법입니다 사용 :

var names = ["John", "Mike", "Peter", "Sid", "Homer"] 
var idx; 

do { 
    idx = parseInt(names.length * Math.random()); 
    alert(names[idx]); 
    names.splice(idx, 1); 
} while (names.length > 0) 

기본적으로 배열의 길이의 범위 내에서 임의의 인덱스를 생성 해당 인덱스에서 요소를 선택한 다음 배열에서 해당 요소를 제거합니다. 표시 할 요소가 더 이상 없으면 루프가 종료됩니다.

데모 : http://jsfiddle.net/4NNTA/1/

목록이 40 개 이상의 항목이 당신이 40 후 종료해야하는 경우 - while에 카운터와 조건을 추가 할 수 있습니다. 루프를 종료 한 후 이동하려는 페이지의 URL로 location.href을 설정하여 다른 페이지로 리디렉션 할 수 있습니다.

업데이트 위의 수정 된 코드를 사용하는 함수입니다. 당신의 이름의 배열을 지정할 수 있습니다

var Names = function() { 

     var data; 
     var counter; 

     function initData() { 
      data = ["John", "Mike", "Peter", "Sid", "Homer"] 
     } 

     this.init = function (c) { 
      counter = c; 
      initData() 
     } 

     this.getName = function() { 

      if (counter === 0) { 
       return "" 
      } else { 

       if (data.length === 0) initData(); 

       var idx = parseInt(data.length * Math.random()); 
       var sName = data[idx] 
       data.splice(idx, 1); 

       counter--; 
       return sName 

      } 
     } 
    } 

function initData의 내부 : 그것은 당신이 이름의 임의의 수를 지정할 수 있습니다.

var myNames = new Names(); 
myNames.init(40); 

을 그리고 때마다 당신은 당신에게 다음 임의의 이름을 줄 것이다

myNames.getName() 

전화 : 그럼 당신은 (이 예 (40)에 초기화) 표시 할 이름의 수를 전달하여 초기화. 이름은 데이터가 다 소모 될 때까지 반복되지 않습니다. 그런 다음 배열이 다시 초기화되고 임의의 반복되지 않은 이름이 다시 시작됩니다. 40 개의 모든 이름이 검색되면 함수는 빈 문자열을 반환하고 그에 따라 확인하고 그에 따라 작동 할 수 있습니다.

+0

도움 주셔서 감사합니다. 내가 알지 못하는 두 가지, 40 명 미만의 이름을 가진다면 어떨까요? 이 무엇 예 위입니다 않습니다 - - 적은 그 (40 개)의 이름이있는 경우 (names.length를가> 0)'모든 이름이 사라 루프를 존재하는 반면 –

+0

다음'컨디셔닝이 종료 모두 5 이름 –

+0

죄송 표시 될 때, 나는 내가 그것을 올렸을 때 coment가 불완전한 이유를 모릅니다. 도움 주셔서 감사합니다. 내가 알지 못하는 두 가지, 40 개 미만의 이름이 있다면 (그러나 여전히 40 개의 이름이 필요합니다)?그리고 JS가 함수를 호출 할 때마다 나에게 하나의 이름 만 부여하도록 요청하는 방법은 무엇입니까? –