为什么我只获得一个math.random值,如何获得更多?

时间:2015-11-22 23:43:31

标签: javascript jquery html

这是我的代码。问题是它生成了一个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');
        });
    }
});

3 个答案:

答案 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。您还可以告诉它返回xy之间的数字(请参阅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');
});