带有嵌套If语句的Javascript随机数

时间:2015-04-16 19:01:18

标签: javascript if-statement nested

我有一些Javascript选择1到10之间的随机数,然后根据所选的随机数是否高于5,将两个图像中的一个加载到img.src =

这是我的代码:

if ((Math.random() * 10) + 1 > 5) {
    img.src = '1.jpg';
} else {
    img.src = '2.jpg';
}

这适用于2张图片,但我现在希望它可以从4张图片中进行选择。

我尝试用上面的代码做一个嵌套的if语句,但我意识到我正在运行Math.random的多个实例,这打败了目的。

然后我尝试使用Math.random在开始时定义一个变量,然后编写一个嵌套的If语句,如下所示:

var picnumber = Math.floor((Math.random() * 4) + 1);

if (picnumber = 1){
  img.src = '1.jpg';
} else {
  if (picnumber = 2){
    img.src = '2.jpg';
  } 
  else {
  if (picnumber = 3){
    img.src = '3.jpg';
  }
  else {
    img.src = '4.jpg';
  }
}}

我已经运行了20多次这段代码,并且不断加载相同的图片,图片“1.jpg”。我想我在这里做了一些非常基本的错误,如何确保为var picnumber分配一个随机数(1,2,3或4),并将正确的图像附加到{ {1}}? (我希望每张图片有25%的几率被选中) 提前感谢您的时间!

3 个答案:

答案 0 :(得分:4)

您正在使用assign运算符(=)而不是比较运算符(==)。此外,您可以使用elseif,这样您就不需要在else语句中添加新的if:

var picnumber = Math.floor((Math.random() * 4) + 1);

if (picnumber == 1){
  img.src = '1.jpg';
} else if (picnumber == 2) {
    img.src = '2.jpg';
} else if (picnumber == 3) {
    img.src = '3.jpg';
} else {
    img.src = '4.jpg';
}

答案 1 :(得分:3)

我建议将图片放在一个数组中。

然后你可以抓住这样的随机图片:

var pics= ['1.jpg', '2.jpg', '3.jpg', '4.jpg'],
    picnumber = Math.floor((Math.random() * pics.length));

img.src= pics[picnumber];

答案 2 :(得分:1)

试试这个:

var picnumber = Math.floor((Math.random() * 4) + 1);

if (picnumber == 1) {
  img.src = '1.jpg';
} else {
  if (picnumber == 2) {
    img.src = '2.jpg';
  } else {
    if (picnumber == 3) {
      img.src = '3.jpg';
    } else {
      img.src = '4.jpg';
    }
  }
}