1

セットアップ:

関数を呼び出すリンクを含む suckerdiv メニューがあります。上記の関数は次のようになります。

function F(string)
{
    var s = '';
    var c = '';
    var t = '';
    if(string == 'cat')
    {
        s = "cat";
        c = "animal";
        t = "fluffy";
    }
   // ...
    document.getElementById("title").innerHTML = t;
    document.getElementByID("category").innerHTML = c;
    document.getElementByID("description").innerHTML = s;
}

正常に動作します。ただし、実際の実装では、description 変数に HTML が少し含まれており、IE を無効にしているようです。Firefox は問題なく処理しますが、たとえば、

c = 'Stuff<br><ul><li>listed stuff</li><li>more listed stuff</li><li>some more listed stuff</li></ul><br>bla bla<br>bla';

その後、IE は不明なランタイム エラーをスローし、その特定のリンクをクリックすると終了します。

上記の 3 つの ID は、次のようにテーブルにネストされた div です。

<table border=1>
<tr><td><div id="title"></div></td></tr>
<tr><td><div id="category"></div></td></tr>
<tr><td><div id="description"></div></td></tr>
</table>

IE ではテーブル自体が読み取り専用であることは知っていますが、TD はそうではないことも知っています。タイトルとカテゴリはどちらも正常に機能するので、その文字列の html と関係があると考えました。エスケープする必要がある部分はありますか?< などの html エスケープ コードを入力してみましたが、HTML が評価されず、醜いテキストが大量に残ってしまいました。

何か案は?

4

3 に答える 3

1

私が推測できるのは、BR タグの自己終了を試してみたいということだけです。<br />

これは、DOM 操作にPrototypejQueryなどのライブラリを使用する場合によくある状況の 1 つです。通常、ブラウザの癖は内部的に考慮されます。

于 2009-02-20T17:56:10.500 に答える
1

どっ!

皆さん、時間を無駄にして申し訳ありません-それはまったく無関係でした. div の ID が原因で行が途切れていました。ページの中央にある HTML は、コンテンツ管理システムによって生成された包含 div にネストされているため、明らかにページの別の場所に別の div がありました。「div id=description」を「div id=dynDescription」に変更すると解決しました。

しかし、答えてくれてありがとう!間違いなく感謝します。

于 2009-02-20T18:54:36.070 に答える
0

次のテスト ケースを作成しました。

<html><head></head><body>
<script type="text/javascript">
function F(str) {
  var s = '';
  var c = '';
  var t = '';
  if (str == 'cat') {
    s = "cat";
    // c = "animal";
    c = 'Stuff<br><ul><li>listed stuff</li><li>more listed stuff</li><li>some more listed stuff</li></ul><br>bla bla<br>bla';
    t = "fluffy";
  }
  // ...
  document.getElementById("title").innerHTML = t;
  document.getElementById("category").innerHTML = c;
  document.getElementById("description").innerHTML = s;
}
</script>
<table border="1">
<tr><td><div id="title"></div></td></tr>
<tr><td><div id="category"></div></td></tr>
<tr><td><div id="description"></div></td></tr>
</table>
<form><input type="button" onclick="F('cat');"></form>
</body></html>

// ...Internet Explorer 7 では正しく動作しているように見えます。エラーの原因となっている操作が何もないのですか? Internet Explorer 7 のすべてのコピーでこれが発生することを確認しましたか (コピーには、表示されているエラーの原因となっているアドオン、破損または古いコンポーネント、または不適切なレジストリ エントリが含まれている可能性があります)。上記のような単純で簡潔なコード サンプルを使用して、文字列を innerHTML に割り当てることに問題を絞り込みましたか?

于 2009-02-20T18:11:36.033 に答える