【问题标题】:Select random item out of known number of items [duplicate]从已知数量的项目中选择随机项目[重复]
【发布时间】:2013-05-22 13:20:05
【问题描述】:

我有 8 个 div 可供选择,它们都分配有 id,命名不是数字,而是描述性的。我希望能够将 .myClass 添加到从这八个中随机选择的一个 div 中。

要生成一个随机数,我会使用这个 JavaScript sn-p:

var random = Math.round(Math.random()*10);

我的问题:

  1. 如何将随机数限制为 8 个可能值中的 1 个?
  2. 如何将 .myClass 添加到随机选择的 8 个具有非数字 id 的 div 中?

【问题讨论】:

  • 您的问题实际上是两个很好回答但不相关的问题合二为一。您应该尝试提出一个问题来发布。
  • 不是真的,@meagar。问题的本质有些不同。
  • 前面已经问过了:stackoverflow.com/questions/1527803/… 包括一个很好的解释

标签: javascript random


【解决方案1】:
  1. var randomNumber= 1 + Math.floor(Math.random() * 8);

【讨论】:

    【解决方案2】:

    如何将随机数限制为 8 个可能值中的 1 个?

    1. 将 8 个可能的值存储在一个数组中,A
    2. 使用Math.random() 获取07(含)之间的数字并分配给X
    3. 你要的随机数是A[X]

    例如:

    var A = [2, 5, 6, 7, 8, 9, 11, 15];
    var X = Math.floor(Math.random()*8);
    
    var theNumber = A[X];
    

    【讨论】:

    • +1:我很确定这就是 OP 的真正含义。
    【解决方案3】:

    怎么样:

    var random = Math.floor(Math.random()*8);
    $("div:eq(" + random + ")").addClass("yourClassHere");
    

    编辑:在编辑之前回答问题,同时还需要选择随机 div。

    小提琴(感谢 smerney):http://jsfiddle.net/5JPWu/2/

    【讨论】:

    • 你刚刚打败了我,+1这是我的例子,jsfiddle.net/5JPWu
    • 非常感谢@timeJV - 我会重新编辑它!
    • 刚刚注意到一个问题,您需要使用floor 而不是round... 因为eq 索引从0 开始,而将random()*8 四舍五入将得到8 (如果只有 8 个 div,这将是无效的)。 jsfiddle.net/5JPWu/2
    • @smerny -- 谢谢!省得以后头疼!介意我在答案中使用你的小提琴吗?
    • $("div.chooseMe:eq(" + random + ")").addClass("yourClass");
    【解决方案4】:
    var  array= [2, 5, 6, 7, 8, 9, 11, 15];
    
    var X = Math.floor(Math.random()*8);
    

    然后使用下面的

    varray[X];
    

    【讨论】:

      猜你喜欢
      • 2012-04-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-07
      • 1970-01-01
      相关资源
      最近更新 更多