很抱歉,如果帖子不清楚,我会尽力解释。我正在网上创建一个社交心理学实验,我需要一个能够随机选择不同名字的功能(如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项后链接到另一页。
感谢您的帮助
答案 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个名称时 - 函数返回空字符串,您可以检查并采取相应的行动。