这是我的代码。问题是它生成了一个math.random值,就是这样。每次点击div
后,我都需要它来保持生成价值。
var rand = Math.random();
$(document).ready(function() {
if(rand < .5) {
$('div').click(function() {
$(this).addClass('blue');
});
} else if(rand < .7) {
$('div').click(function() {
$(this).toggleClass('red');
});
} else if(rand < .9) {
$('div').click(function() {
$(this).toggleClass('purple');
});
} else {
$('div').click(function() {
$(this).toggleClass('black');
});
}
});
答案 0 :(得分:2)
如果你希望你的逻辑在每次点击div时运行,你应该生成随机数,如果树位于div点击回调中。类似的东西:
$('div').click(function() {
var rand = Math.random();
if(rand < .5) {
$(this).addClass('blue');
} else if (rand < .7) {
$(this).addClass('red');
}
// and so on
});
答案 1 :(得分:1)
试试这段代码告诉我它是否需要改进:)
以下是此处使用的代码的定义...
Math.floor
用于从数字中删除小数点。要获取可以拉随机数组元素的随机数,必须将小数转换为整数,并确保它不大于或小于数组中元素的数量。您可以通过将其乘以要返回的最大数字来提供一系列Math.random
。您还可以告诉它返回x
和y
之间的数字(请参阅https://stackoverflow.com/a/1527834/3011082)。
<强> 注意:的强> 也可以在数组中同时输入hex,rgb或任何颜色值。
$(document).ready(function() {
var colors = ['green', 'black', 'red', 'orange', 'blue'];
var randomNumber = 0;
$('div').click(function() {
if (this.hasAttribute('data-clicked') == false) {
randomNumber = Math.floor(Math.random() * colors.length);
this.style.backgroundColor = colors[randomNumber];
this.setAttribute('data-clicked', '');
}
});
});
div {
width: 50px;
height: 50px;
border: 2px solid orange;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
答案 2 :(得分:0)
嗯,它只生成一个值,而你只生成一次。因此,每次单击按钮时都必须重新生成它:
$('div').click(function(){
rand = Math.random();
$(this).addClass('blue');
});
等