在jquery中随机生成6个变量中的1个

我试图使一系列div中的一个随机出现jquery以及它的导航链接(即如果服务被选中,服务链接将解除)。 我在这个论坛上以各种forms发现了这段代码,并且想知道我是否以及如何将其改编为我想要的东西。

var services = $(random1, random2, random3).get() .sort(function(){return Math.round(Math.random());}).slice(0,1) $(services)/*Conditions here*/; var random1 = false; var random2 = false; var random3 = false; 

我知道这是一个非常糟糕的例子。 我迷路了。 任何帮助都会得到很大的帮助,并提前感谢。

编辑:我确实尝试过更容易比较,但这是我实际工作。 我试图改编@pst的代码。

  var v1 = "hello" var v2 = "world" var control = [ function (v) { v1 = v }, function (v) { v2 = v } ] $.each(control, function (i, fn) { fn(false) }) $("a#random-btn").click(function(event){ event.preventDefault(); var trueIdx = Math.floor(control.length * Math.random()) props[trueIdx](true) if (v1 === true){ $("div#small-obstacles-contain a#1 span").stop().animate({opacity: 1,}, '100').animate({opacity: 0,}, '100'); $("div#small-obstacles-contain a#2 span").stop().animate({opacity: 1,}, '100').animate({opacity: 0,}, '100'); } if (v2 === true){ $("div#small-obstacles-contain a#3 span").stop().animate({opacity: 1,}, '100').animate({opacity: 0,}, '100'); $("div#small-obstacles-contain a#4 span").stop().animate({opacity: 1,}, '100').animate({opacity: 0,}, '100'); } }); 

我怀疑这确实是一个XY问题,这可以解决标题,但可能会错过“在一天结束时真正需要的东西”。 在任何情况下,这些概念都有一定的适应性。


我不会使用变量,而是使用数组/对象。

让我们假设一个对象(所以我们可以使用不同的名称:-)然后是一个“控制”序列,其属性有资格切换:

 var obj = {a: true, b: false, "3": false, hello: "world"} var control = ["a", "b", "3"] // set all to false -- noet that $.each != $().each !!! $.each(control, function (i, prop) { obj[prop] = false }) // set one true var trueIdx = Math.floor(control.length * Math.random()) obj[control[trueIdx]] = true 

但是,如果由于某种原因确实需要变量,那么可以使用闭包(这也可以用于为特定绑定运行任意代码):

 var v1 = "hello" var v2 = "world" var control = [ function (v) { v1 = v }, function (v) { v2 = v } ] // set all to false -- noet that $.each != $().each !!! $.each(control, function (i, fn) { fn(false) }) // set one true var trueIdx = Math.floor(control.length * Math.random()) props[trueIdx](true) 

快乐的编码。