2013-08-28 111 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。退出循環後,您可以通過將location.href設置爲您想要轉到的頁面的URL來重定向到另一個頁面。

UPDATE這是一個使用上述修改代碼的函數。它可以讓你指定名稱的任意數目:

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您可以指定名稱的數組。然後你通過傳遞要顯示的名稱數量(本例中初始化爲40)初始化:

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

,然後每一次調用

myNames.getName() 

它會給你一個隨機的名字。在數據耗盡之前,名稱不會重複 - 然後重新初始化陣列,並重新開始隨機重複名稱。當所有40個名字被檢索 - 函數返回空字符串,你可以檢查和相應的行爲。

+0

感謝您的幫助。只有兩件事我沒有得到,如果我有不到40個名字? –

+0

如果你有40個以上的名字,那麼當所有的名字都消失時,條件'while(names.length> 0)'就會存在 - 這就是上面的例子 - 當所有5個名字都顯示時退出 –

+0

對不起,我不知道爲什麼當我發佈它時,coment是不完整的。 感謝您的幫助。只有兩件事我沒有得到,如果我有不到40個名字(但仍需要出現40個名字)?我怎麼問JS只給我一個名字,每次我打電話的功能? –