Javascript - Random,if语句和event.target

时间:2016-01-25 11:44:25

标签: javascript firefox if-statement random javascript-events

我是Javascript的新手,我遇到event.target的问题。问题是我使用Math.random来显示一个数字,然后使用if语句,这样如果您点击与该数字对应的图像,它会变大,如果您点击另一个图像,它的不透明度变化了。

它在Chrome和IE中完美运行,但在Firefox中却不行(我知道这是经典之作)。

这是我的代码:

var sunrise_sunset = [19, 20 ,6, 7];
var night = [21, 22, 23, 0, 1, 2, 3, 4, 5];
var day = [8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18];
var hours = sunrise_sunset.concat(night).concat(day);

var randomHour = Math.floor(Math.random() * hours.length);

{document.getElementById("soleil").addEventListener("click", function(){checkAnswer(sunrise_sunset)}, false);
 document.getElementById("nuit").addEventListener("click", function(){checkAnswer(night)}, false);
 document.getElementById("jour").addEventListener("click", function(){checkAnswer(day)}, false);
}

function checkAnswer(array) {  
  var isCorrect = false;
  for(var i = 0; i<array.length; i++) {
    if(array[i] == randomHour){
      isCorrect = true;
      break;
    }
  }

  if(isCorrect) {
    event.target.style.width=500;

  }
  else {
    event.target.style.opacity = 0.5;
  }
};
<input class="img" type="image" id="soleil" src="img/soleil.jpg" alt="soleil">
<input class="img" type="image" id="jour" src="img/jour.jpg" alt="jour">
<input class="img" type="image" id="nuit" src="img/nuit.jpg" alt="nuit">

所以我的问题是,如何让它在Firefox中运行?我应该改变我的if语句吗?我阅读了很多帖子,他们通过一个函数重新定义了事件,但我不知道如何用随机值和if语句来做这件事。我不是说没有办法,只是我没有看到它......

1 个答案:

答案 0 :(得分:0)

答案在安德烈亚斯评论链接中。需要将event参数传递给checkAnswer方法。 IE和Chrome全局定义事件,但firefox仅将其定义为函数参数。在我看来,你应该以任何方式将它作为参数传递。

尝试以下代码,查看正在传递的新参数事件。我在firefoxs中测试过它。它在进行这些更改后正在工作。

var sunrise_sunset = [19, 20 ,6, 7];
   var night = [21, 22, 23, 0, 1, 2, 3, 4, 5];
   var day = [8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18];
   var hours = sunrise_sunset.concat(night).concat(day);

   var randomHour = Math.floor(Math.random() * hours.length);

{
    document.getElementById("soleil").addEventListener("click", function(e){checkAnswer(e, sunrise_sunset)}, false);
    document.getElementById("nuit").addEventListener("click", function(e){checkAnswer(e, night)}, false);
    document.getElementById("jour").addEventListener("click", function(e){checkAnswer(e, day)}, false);
}

function checkAnswer(event, array) {  
  var isCorrect = false;
  for(var i = 0; i<array.length; i++) {
    if(array[i] == randomHour){
        isCorrect = true;
      break;
    }
  }

  if(isCorrect){
        event.target.style.width=500;
  }else{
      event.target.style.opacity = 0.5;
  }
};