0
4

3 回答 3

0

以下应该可以正常工作:

$("a[id^=ID]:eq(" + Math.floor(Math.random() * $("a[id^=ID]").length) + ")").show();

我们在做什么?

让我们从内到外。我们使用Math.random()它给我们一个介于 0 和 1 之间的随机数(例如 0.223),然后我们将它乘以<a>元素的数量。如果Math.random()返回0.6,并且有 2 个<a>元素,我们将四舍五入为1,否则我们将四舍五入为0。然后我们将值设置为下限(你不能有 , 的索引0.282来获取01。最后我们使用eq()过滤器说我们只想要第 n 个<a>元素并使用show()它来显示它。我们的a选择器a[id^=ID]意味着“一个带有id以字符串 " 开头的属性ID

于 2013-07-28T20:28:52.997 回答
0
于 2013-07-28T20:32:38.863 回答
0

http://jsbin.com/asedoj/1/edit

不要使用内联 JS,它很难维护。
创建一个函数,它将为您生成所需范围内的随机数:

<a id="detecteur-play">Play</a>

<a style="display:none;" id="ID1">STOP1</a>
<a style="display:none;" id="ID2">STOP2</a>

// Reusable Randomizer function
function ran(min, max) {
  return ~~(Math.random()*(max-min+1))+min;
}

$('#detecteur-play').click(function(){
  $(this).hide();
  $('#ID'+ran(1,2)).show();
});

我使用的 ~~ 运算符是一个双 NOT 位运算符,用于替换Math.floor

于 2013-07-28T20:42:14.047 回答