显示来自Javascript的图像

时间:2018-01-31 20:56:21

标签: javascript html

当结果来自oneArray时,我尝试显示单独的.png文件;当来自随机数的结果来自twoArray时,我试图显示另一个.png文件。图片将显示它们的稀有性。但是,当我复制function displayImage()位时,它什么都没有?还有另外一种方法吗?

function myFunction() {
  var luck = ['1', '2', '3', '4', '5', '6', '7', '8', '9'],
    oneArray = ["tree", "dog", "cat", "wood"];
    twoArray = ["tiger", "dot", "tame", "buzz"];
  lucknumber = Math.floor((Math.random() * luck.length));

  if (lucknumber < 8) {
    function displayImage() {
      var num = Math.floor(Math.random() * oneArray.length);
      window.canvas.src = oneArray[num];
    }
    displayImage();
  } else {
    function displayImage() {
      var num = Math.floor(Math.random() * twoArray.length);
      window.canvas.src = twoArray[num];
    };
    displayImage();
  }
}

myFunction();

谢谢 - 我知道可能还有很多其他问题与此相符,但不适用于我目前在D中的情景:

1 个答案:

答案 0 :(得分:0)

function不会在代码中存在的行中创建。 JavaScript会扫描您的代码,并且会在运行任何代码之前立即创建function。有两种方法可以解决这个问题。

改为将function指定为变量:

var displayImage = function() {
  var num = Math.floor(Math.random() * oneArray.length);
  window.canvas.src = oneArray[num];
}

当您指定为变量时,声明(变量名称)是在顶部创建的唯一内容。函数本身未创建。

但这不是最干净的解决方案。就个人而言,我会重构并将两者都变成一个兼容两者的函数:

function displayImage(array) {
  var num = Math.floor(Math.random() * array.length);
  window.canvas.src = array[num];
}

将它在选择的数组中传递给相同的函数