2013-10-30 70 views
0

運行使用Internet Explorer 8以下代碼時,我得到一個錯誤:的Javascript SUBSTR 8

for (var lang_elem in this.langElems) { 
    if (this.langElems.hasOwnProperty(lang_elem)) { // ignore attributes down the prototype chain 
     var www1 = this.langElems[lang_elem].length; 
     var xxx1 = line.substr(0, www1); 
     var yyy1 = this.langElems[lang_elem]; 

     if (xxx1 == yyy1) { 
      elem_type = lang_elem; 
      break; 
     } 
    } 
} 

調試器停止在XX1定義行(我明明定義進行調試這三個變量)與以下消息:

Unterbrechung be JScript-Laufzeitfehler - Das Objektunterstützdiese Eigenschaft oder Methode nicht。

這轉化爲在JScript的運行時錯誤

歇 - 對象不支持屬性或方法。

我檢查了,但據我所知,IE8應該支持substr方法。我把它稱爲line.substr(0,2),這應該工作(沒有負面參數)。

有沒有人有一個想法,爲什麼顯示此錯誤?

+3

'line'尚未在您顯示的任何代碼中定義。 – Adam

+3

'線'是什麼?在它之前做一個'console.log(typeof line)'。輸出是什麼? – acdcjunior

+0

它更容易使用切片或! strLong.split(strSubStr)[1]; – dandavis

回答

1

您確定line此時是一個字符串嗎?這通常是變量爲空或未定義時出現的消息。嘗試在撥打substr之前粘貼console.log(line);。我也看不到它在你的例子中定義,但你可能會錯誤地修剪它。

+0

對不起,提供這麼少的信息 - 它出於一個大項目,我試圖複製重要的部分。不過,你有正確的想法菲利普。非常感謝!問題如下:由於IE8沒有爲數組提供.indexOf(),我已經'手工'定義了它。現在這個函數在使用***進入***時也被考慮到了。我添加了*** if(typeof line!==「string」)break; ***現在它按預期工作。非常感謝你的幫助。 –