2009-11-11 66 views
0

我找不到IE7中的innerHTML錯誤。我需要查看動態生成的HTML的內容,並在文本爲「-1」時將其更改。我正在使用原型js庫,但找不到修復程序。有任何想法嗎?將文本與innerHTML IE7問題進行比較

JS:

<script language="javascript" type="text/javascript"> 
    Event.observe(window, 'load', function() { 
    var num = 1; 
    var allAccountInfoItems = $A('accountInfoItem'); 
    var numofElements = (allAccountInfoItems.length); 

    for (var x = 0; x < numofElements; x++) 
    { 
     var oldHTML = $('accountInfo').innerHTML; 
     var newHTML = "Unlimited"; 

     if (oldHTML == "-1") 
     { 
      $('accountInfo').update(newHTML); 
     } 

     var oldId = $('accountInfo').id; 
     var numPlus = num++; 

     $('accountInfo').id = oldId + numPlus; 
    } 

}); 
</script> 

回答

0

你嘗試微調空白?文本內容周圍可能有空白文本節點。

$('accountInfo').innerHTML.strip() 

如果不工作,只是嘗試alert(oldHTML),看看你得到真正的價值。


旁註:你意識到$A('accountInfoItem')結果["a", "c", "c", "o", "u", "n", "t", "I", "n", "f", "o", "I", "t", "e", "m"]?這是故意的嗎?

0

$ A將任何內容轉換爲數組。我想你想用$$()和CSS選擇器。對你來說,這將是

$$('.accountInfoItem'); 

的點是因爲它可能與accountInfoItem元素類名的列表。

0

正確(DOM型)的方式獲得的innerHTML是element.childNodes [0] .textContent

所以,在你的代碼,這將是:

var oldHTML = $('accountInfo').childNodes[0].textContent; 

你可能會想將羅丹尼提到的字符串去掉,確保你只有文本。

var oldHTML = $('accountInfo').childNodes[0].textContent.strip(); 
+0

FYI'textContent'在所有版本的IE中都失敗(不確定是否對OP有影響)。 – 2009-11-12 00:42:51

+0

嗯,IE使用innerText,謝謝你的回覆。 – paulj 2009-11-12 16:18:50

相關問題