FireFox Javascript事件处理



我有以下功能在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未定义。

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

是否有任何方法来确保事件和属性都可以传递?

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

这是因为您试图使用event而不将其声明为参数。这只适用于微软的浏览器,这使得event是一个全局的,而Chrome则只适用于微软的代码。你需要声明参数。

几乎不需要new Function,在这种情况下当然不需要:

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) {
// ------------------^

相关内容

  • 没有找到相关文章

最新更新