1

この Javascript コマンドを使用して、空の div をページ上の別の div の値に置き換えています。だから私はこれを私のhtmlに持っています:

<a href = "... some links that call the javascript ...">text link</a>
<div id="highlight">
</div>

<div id="1">
...some text
</div>

<div id="2">
... some text
</div>

スクリプトは

settext(newdiv) {
  // set top of page highlight to appropriate text
  var desc = document.getElementById('highlight');
  if (desc.hasChildNodes()) desc.removeChild(desc.lastChild);
  document.getElementById('highlight').appendChild(
    document.getElementById(newdiv));
  }

「ハイライト」divを別のdiv 1、2、3などに初めて置き換えると、スクリプトは正しく機能します。そのため、適切なハイパーリンク テキストをクリックすると、空白の div (id="highlight") が下の関連する div (例: div id="1") の内容で埋められます。

次に、新しいリンクをクリックすると、div id="highlight" の内容が消えて、新しい div テキストに置き換えられます。しかし、「ハイライト」divが空白になる前に削除されたdivを2回クリックします。以前にクリックされていないdivを使用した場合にのみ置き換えられます。

Firefox Web コンソールで Javascript エラーを確認すると、次のように表示されます。

「コンポーネントが失敗コードを返しました: 0X80004003 (NS_ERROR_INVALID_POINTER) [nsIDOMHTMLDivElement.removeChild]」

何らかの理由で限界を超えているようです。どうすればこれを修正できますか?

4

1 に答える 1

0

ノード レベルで DOM を変更する代わりに、「innerHTML」を使用して div コンテンツを移動することをお勧めします。

于 2012-07-08T13:02:59.140 に答える