问问题
98 次
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
来获取0
或1
。最后我们使用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 回答