10

現在の範囲 (W3C 範囲) に html を挿入したい。

メソッドinsertNodeを使用する必要があると思います。そして、それはテキストでうまく機能します。

例:

var node = document.createTextNode("some text");
range.insertNode(node);

問題は、html を挿入したいことです (「<h1>test</h1> もう少しテキスト」のようなものかもしれません)。また、createHTMLNode() はありません。

createElement('div') を使用して ID を指定し、html を innerHTML として使用してから、挿入後に nodeValue に置き換えようとしましたが、DOM エラーが発生します。

挿入したいhtmlの周りに余分なhtml要素を取得せずにこれを行う方法はありますか?

4

5 に答える 5

9

"<h1>test</h1>some more text"HTML 要素と 2 つのテキストで構成されているためです。ノードではありません。

HTML を挿入する場合は、 を使用しますinnerHTML

挿入したいhtmlの周りに余分なhtml要素を取得せずにこれを行う方法はありますか?

要素を作成します (ドキュメントに追加しないでください)。その innerHTML を設定します。次に、 をループしてすべての子ノードを移動しfoo.childNodesます。

于 2011-09-25T11:44:16.907 に答える
5

一部のブラウザー (特に IE のすべてのバージョンではない) では、Rangeオブジェクトが元々非標準createContextualFragment()であることが役立つ場合があります。標準化されたので、IE などのブラウザの将来のバージョンでこれが実装される可能性があります。

次に例を示します。

var frag = range.createContextualFragment("<h1>test</h1>some more text");
range.insertNode(frag);
于 2011-09-25T18:24:35.403 に答える
2

試す

function createHTMLNode(htmlCode, tooltip) {
    // create html node
    var htmlNode = document.createElement('span');
    htmlNode.innerHTML = htmlCode
    htmlNode.className = 'treehtml';
    htmlNode.setAttribute('title', tooltip);
    return htmlNode;
}

から: http://www.koders.com/javascript/fid21CDC3EB9772B0A50EA149866133F0269A1D37FA.aspx

于 2011-10-19T03:16:03.347 に答える
2

innerHTML の代わりに、appendChild(element); を使用してください。これはあなたを助けるかもしれません。ここにコメントが必要な場合は、例を挙げます.

于 2011-09-25T11:46:06.657 に答える