2016-09-21 75 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

​​