2013-05-28 33 views
0

您好,我在IE中遇到了這個錯誤。它適用於所有其他瀏覽器。SCRIPT5007:無法獲取屬性'indexOf'的值:對象在IE中爲空或未定義

這是行,其中錯誤顯示:

if (parseFloat(totalnumm.replace(/[^0-9-.]/g,'')) > compare_value_neww && values[x].indexOf("Custom") > -1). 

我用Google搜索,發現一個解決辦法:

<meta http-equiv="X-UA-Compatible" content="IE=8;FF=3;OtherUA=4" /> 

但它沒有爲我工作。

+3

這不是足夠的代碼 - 「值」是有問題的項目,我們不知道'值'是什麼或它是如何構建的。 – SpaceBison

+0

雅,是值[x]返回一個字符串或數組或什麼? –

+0

是它的返回數組 – honey

回答

7

我打算問你在測試這個版本的IE版本,但是因爲你已經在你的meta標籤中指定了content="IE=8,所以這是毫不相關的。

簡而言之,IE8或更早版本不支持數組的.indexOf。 (這包括在兼容模式下更高的IE版本,所以你的meta標籤將意味着它不會在任何版本的IE工作)

解決方案:

  1. 使用像jQuery(或類似)庫它提供了一個可以用來代替的.inArray()方法。

    那麼你需要使用var.indexOf(x)改變你的代碼,以$.inArray(var,x)

    如果你已經使用jQuery(或具有此功能的其他庫)選擇這種解決方案。

  2. 使用像this one這樣的polyfill庫,它將標準.indexOf方法添加到Array原型。

    這應該允許你保持現有的代碼不變;只包括圖書館。

    如果您很樂意使用庫,但尚未安裝可幫助安裝的庫,請使用此解決方案。

  3. 編寫自己的函數,使用for()循環完成相同的工作。

    這是完全改變你在數組中找到東西的方法,但這意味着你不需要使用任何額外的庫。

    如果您不想(或不能,無論出於何種原因)使用第三方庫,請使用此解決方案。

  4. 刪除您的IE8 meta標籤(這是很糟糕的,無論如何,所以這是一個好主意),並只支持你的網站與IE9或更好的用戶。

    如果您很高興停止支持舊的IE版本,請使用此解決方案。

    事實上,無論如何,這是一個好主意;沒有理由使用元標記強制IE進入兼容模式。最好將其設置爲content="IE=edge"。這將徹底解決新版IE版本的問題。如果你確實需要支持IE8或更早的版本,那麼這個解決方案不會解決問題,你還需要使用上面的其他解決方案之一,但我仍然建議你這樣做,因爲按照你的意思,故意從較新的IE版本中刪除功能,因爲沒有任何理由。

+0

我該怎麼做,請幫助...任何1個有效的解決方案? – honey

+0

@honey - 編輯答案,包括使用哪一個提示。 – Spudley

+0

您好Spodely它看起來這可以解決問題。什麼請告訴我在哪裏我要添加它.. jQuery.inArray(value,array [,fromIndex]) – honey

相關問題