2012-09-05 95 views
0

我正在使用Javascript編寫一個搜索功能,這個功能已經基本完成,並且可以在Chrome瀏覽器上正常工作,但不能在瀏覽器中運行。我用資源管理器的開發工具,它告訴我,這是它不能處理行:Javascript不會在IE上編譯,但可以在Chrome上運行

if (compareElement.indexOf(compareString)!== -1 && 
    processFindings.indexOf(processes[i]) === -1) 

誤差對象不支持此屬性或方法。

用來讀取行:

if(compareElement.indexOf(compareString)!== -1) 

它工作得很好,但只有當我添加的額外條件,即資源管理器無法處理它。

任何人都可以幫助我嗎?

+0

嗨瑞安,IE似乎並不認爲'processFindings'是一個字符串。你確定它是一個嗎? – zetlen

+0

我覺得IE有時候對JS來說是最殘酷的。只是因爲它在其他瀏覽器的作品並不意味着沒有一個JS錯誤。我認爲@zetlen是正確的雙重檢查你的類型,並確保它們是字符串 –

+0

** processFindings **是一個數組,我認爲有數組的indexOf? –

回答

2

並非所有版本的IE都有。 indexOf()數組的方法。有一個polyfill,它可以很好地工作。

在這裏看到: https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/indexOf

這可能會導致代碼無法遍歷數組正常不過的問題。

+0

謝謝,那完美的工作 –

+0

@ jeremy-有什麼問題? – RobG

+0

有些人使用.forEach或使用for循環遍歷數組。添加的'.indexOf()'顯示爲一個屬性並被處理。 任何人都正常循環數字索引(這是唯一正確的方法)是正常的。 –

0

您可以複製該方法(如果它不存在),但使用原型將需要它在任何調用之前存在。一個例子:

if (!Array.prototype.indexOf) { 
    Array.prototype.indexOf = function(searchElement,fromIndex) { 
     fromIndex = parseInt(fromIndex || 0); 
     for (var i = 0; i < this.length; i++) { 
      if (this[i] == searchElement) return i; 
     } 
     return -1; 
    } 
} 
相關問題