2016-09-21 56 views
0

我有以下功能在Chrome/IE火狐的JavaScript事件处理

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 + "'); 

有什么办法可以确保事件和属性都可以通过吗?

+0

是什么'onScrollAdj' - 我敢打赌,它提到了“事件” - 曾经是因特网浏览器“kludge”,由于某些原因,Chrome决定实施 –

回答

2

however I get 'ReferenceError: event' is undefined.

这是因为您尝试使用event而未声明它为参数。这只适用于全球范围内使用event的微软浏览器,以及Chrome仅向纯微软代码提供支持的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

​​