随机物品和链接

时间:2013-08-28 18:33:48

标签: javascript jquery random

很抱歉,如果帖子不清楚,我会尽力解释。我正在网上创建一个社交心理学实验,我需要一个能够随机选择不同名字的功能(如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');
  });})

使用此代码和“mousetrap”库,我可以在按下某个键时更改名称。但我不知道如何使名称随机出现(这意味着,不是按照它们在代码中的顺序,而是每次我都这样做时不同)。在40个不同的名字之后,我需要链接到另一个html页面。

感谢您的帮助,对不起,如果我的上一篇文章令人困惑......这是我编程的第一种方法:)

老帖子: 我是编程世界的新手,我需要一些帮助使这段代码选择随机项目,而不是按照我把它们的顺序。此外,我从网上得到了这个,我需要它停止40项后链接到另一页。

感谢您的帮助

1 个答案:

答案 0 :(得分: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设置为您要转到的网页的网址,重定向到其他页面。

更新 这是一个使用上述修订代码的函数。它允许您指定任意数量的名称:

    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个名称时 - 函数返回空字符串,您可以检查并采取相应的行动。