0

IE7 の innerHTML バグの回避策が見つかりません。動的に生成された HTML の内容を見て、テキストが「-1」の場合は変更する必要があります。プロトタイプ js ギャラリーを使用していますが、修正が見つかりませんでした。何か案は?

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>
4

3 に答える 3

0

空白をトリミングしてみましたか?テキストコンテンツの周囲に空白のテキストノードがある場合があります。

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

alert(oldHTML)それでもうまくいかない場合は、実際に得ている価値を確認してみてください。


補足:あなたは$A('accountInfoItem')結果を実現し["a", "c", "c", "o", "u", "n", "t", "I", "n", "f", "o", "I", "t", "e", "m"]ますか?これは意図的なものですか?

于 2009-11-11T21:27:09.767 に答える
0

$A は何でも配列に変換します。CSSセレクターを含む $$() を使用したかったと思います。あなたの場合、それは

$$('.accountInfoItem');

ドットは、クラス名として accountInfoItem を持つ要素のリストである可能性があるためです。

于 2009-11-11T22:12:35.710 に答える
0

innerHTML を取得する適切な (DOM フレンドリーな) 方法は、 element.childNodes[0].textContent です。

したがって、コードでは次のようになります。

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

Roatin が述べたように、おそらく文字列を削除して、テキストだけがあることを確認する必要があります。

var oldHTML = $('accountInfo').childNodes[0].textContent.strip();
于 2009-11-11T22:28:26.207 に答える