FireFox Javascript事件处理

时间:2016-09-21 11:05:00

标签: javascript firefox javascript-events event-handling

我有以下在Chrome / IE中运行的功能

for(var i = 0; i < 5; ++i) {
        document.all["elems" + i].onscroll = getFunc("onScrollAdj(document.all['tb" + i + "']);");
    }

function getFunc(jsString) {
    return new Function(jsString);
}

但是我得到ReferenceError: event is undefined

我试图重新编写函数以包含一个事件,然后我又得到另一个错误var i is undefined

  document.all["elems" + i].onscroll = onScrollAdj(event, document.all['tb" + i + "');

有没有办法确保传递事件和属性?

1 个答案:

答案 0 :(得分:2)

  

然而我得到'ReferenceError:event'是未定义的。

那是因为您试图使用event而不将其声明为参数。这仅适用于使event成为全局的Microsoft浏览器,而Chrome仅向仅限Microsoft的代码提供支持。您需要声明参数。

几乎不需要new Function,当然也不需要{<1}}:

for(var i = 0; i < 5; ++i) {
    document.all["elems" + i].onscroll = getFunc(i);
    // ------------------------------------------^
}

function getFunc(i) {
// --------------^
    return function(event) { onScrollAdj(event, document.all['tb' + i]); };
    // -------------^--------------------^
}

请注意,您必须确保onScrollAdj接受event

function onScrollAdj(event, tbThingy) {
// ------------------^