2011-07-30 83 views
0

我在IE瀏覽器中遇到了一個奇怪的錯誤(我在IE 8上試過) 一切都很好,用不同的瀏覽器。javascript錯誤:匿名函數在IE中的參數無效

上的功能與此類似的(我不能發佈原來的一個,因爲它是從最初被混淆和壓縮非可再發行庫)無效參數:

function createADiv() { 
    var f = document.createElement('div'); 
    f.set = [function (z) { // error on this line 
     f.style.width = z 
    }, function (z) { 
     f.style.height = z 
    }]; 
    return f; 
} 

的問題在於f的範圍,但我不明白爲什麼在匿名函數中使用f應該不起作用。

有關如何規避此Internet Explorer錯誤的任何想法?

我檢查了其他「無效的參數錯誤」,但這個似乎是一個不同的情況。

在此先感謝

+0

你怎麼刨使用該F DIV? – Ibu

+0

var test = createADiv(); test.set [0](「10px」); – Jser

回答

0

我想這是你正在嘗試做的:

function createADiv() { 
    var f = document.createElement('div'); 
    f.set = { 
     width: function (z) { // error on this line 
      f.style.width = z 
     }, 
     height: function (z) { 
      f.style.height = z 
     } 
    }; 
    return f; 
} 

現在,當你創建一個div,你可以這樣做:

var newDiv = createADiv(); 
newDiv.set.height("200px"); 

而是告訴你真的這是無用的,因爲JavaScript已經這樣做:

newDiv.style.height = "200px"; 

沒有太大的區別

+0

是的,我同意你,但我試圖使用一個20k的js庫,它不斷地使用這種代碼結構 – Jser

+0

@Jser在這種情況下,你可以使用上面的代碼,它不會有任何問題與IE – Ibu

+0

它不是就這麼簡單,我不能改變這個代碼 我幾個(+100)調用其設置使用變量 的高度和寬度(例如:sample.set [I](K + 「10px的」)) 我只是想了解爲什麼我不能在Internet Explorer的匿名函數中使用f – Jser

0

不知道爲什麼,嘗試重新寫它,因爲這

function createADiv() { 
    var f = document.createElement('div'); 
    f.set = [function a (z) { // error on this line 
     f.style.width = z 
    }, function b (z) { 
     f.style.height = z 
    }]; 
    return f; 
}