2013-08-28 110 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只给我一个名字,每次我打电话的功能? –