Javascript答案未定义

时间:2014-05-09 19:13:14

标签: javascript function firefox undefined

使用以下代码适用于所有浏览器,但在Firefox中它会出现错误" TypeError:answer is undefined quiz.js:13"

function getAnswer() {
var answer = window.event,
    btn = answer.target || answer.srcElement;
return btn.id;
}

在我的完整代码行13中

btn = answer.target || answer.srcElement;

我使用这段代码检查按下了哪个按钮。

有什么方法可以解决这个问题吗?

2 个答案:

答案 0 :(得分:3)

window.event仅适用于IE。对于其他浏览器,事件作为参数传递给处理程序。

由于这不是您事件的处理程序,因此您必须在实际处理程序中执行此操作并将该信息传递到getAnswer函数,而不是使用全局window.event

function getAnswer(e) {
    var btn = e.target || e.srcElement;
    return btn.id;
}

document.addEventListener('click', function(e) {
    e = e || window.event;
    console.log(getAnswer(e));
 });

或者,如果使用HTML属性,则必须从HTML传递它。

<p onclick="alert(getAnswer(event))"></p>

答案 1 :(得分:0)

...是

Firefox没有window.event,而是使用传入的事件对象。(据我所知,此代码也不适用于Chrome。)

function getAnswer(event) {
  var answer = event || window.event,

  // Added the `var` here.
  var btn = answer.target || answer.srcElement;
  return btn.id;
}