Javascript:如何检查所有三个变量是否不同?

时间:2016-06-15 21:56:06

标签: javascript web

我正在为大学做一个网站项目,我想在网站上显示三张图片。我的文件夹中存储了10张图片(全部名为“slika 1到10”,脚本有三个变量,所有这些变量随机生成1到10之间的数字,然后显示图片“slika”+ randomNumber。

我如何检查所有三个变量是否不同,以便每当我刷新网站时这三张图片总是不同。

JS代码:

window.onload=odaberiSliku;

var broj1=Math.floor(Math.random() * 10) +1;
var broj2=Math.floor(Math.random() * 10) +1;
var broj3=Math.floor(Math.random() * 10) +1;

    function odaberiSliku() {
        document.getElementById("slika1").src = "slike/randomslike/slika"+broj1+".jpg";
        document.getElementById("slika2").src = "slike/randomslike/slika"+broj2+".jpg";
        document.getElementById("slika3").src = "slike/randomslike/slika"+broj3+".jpg";
    }

如果有人想知道,变量名称都是克罗地亚语。

2 个答案:

答案 0 :(得分:2)

虽然Lux's answer完全正常,但如果您(1)生成 n 长度的动态列表和/或(2)如果列表变得非常大,则它不可扩展。

有一种更简单的方法可以实现您打算做的事情。您基本上试图生成唯一的随机数 - 这类似于生成一个唯一的增量数字数组并将它们混洗。

我认为这种方法可以更好地为您提供服务,而不是通过对每个随机生成的数字进行测试的试错法,我相信这种方法会更好。

您只需要:

  1. generate a simple array,从1-10开始(上限应与您拥有的图像数相对应),
  2. shuffle it
  3. 采用混洗数组中的前3个元素
  4. 遍历切片数组
  5. 将每个数字连接到网址模板
  6. 将其分配给您选择的元素
  7. 概念验证代码如下:

    var imageCount = 10,
        arr = new Array(imageCount).join().split(',').map(function(item, index) {
            return ++index;
        }),
        shuffle = function(a) {
            var j, x, i;
            for (i = a.length; i; i -= 1) {
                j = Math.floor(Math.random() * i);
                x = a[i - 1];
                a[i - 1] = a[j];
                a[j] = x;
            }
        };
    
    // Shuffle the array
    shuffle(arr);
    
    // Get first 3 elements
    var sliced = arr.slice(0, 3);
    
    // Iterate through first 3 elements, and assign image source
    for (var i = 0; i < sliced.length; i++) {
      document.getElementById("slika" + i).src = "slike/randomslike/slika" + sliced[i] + ".jpg";
    }
    

答案 1 :(得分:1)

在生成变量后,请检查它:

{{1}}