だから私はそのようにいくつかのプレタグが付いたdivを持っています:
<div id="editor" >
<pre contentEditable="true">1</pre>
<pre contentEditable="true">2</pre>
<pre contentEditable="true">3</pre>
</div>
ここで、Javascriptを使用して1と2の間に新しいpre
ノードを配置したいと思います(DOMが二重にリンクされたツリーであることを理解しているため)このようにしてみましたが、ポインタが近づいているため、ポインタが編集できない可能性があるという意味です。
(イベントハンドラ内のスニペットのみ、e
がイベントです)
var tag = e.srcElement;
if(tag.nextSibling){
var next = tag.nextSibling;
var newPre = document.createElement('pre');
newPre.setAttribute("contentEditable", "true");
newPre.innerHTML = "boom";
tag.nextSibling = newPre;
newPre.nextSibling = next;
}
これらの最後の2行は私のc ++の経験からのものですが、JSには気味が悪いです。新しい兄弟ノードを設定するにはどうすればよいですか?
ここに私がそれをする方法があります:
[〜#〜] js [〜#〜]
var container = document.getElementById('editor'),
firstChild = container.childNodes[1];
if (container && firstChild) {
var newPre = document.createElement('pre');
newPre.setAttribute("contentEditable", "true");
newPre.innerHTML = "boom";
firstChild.parentNode.insertBefore(newPre, firstChild.nextSibling);
}
jsfiddle: http://jsfiddle.net/bZGEZ/
insertAdjacentElement または insertAdjacentHTML を使用して、新しい兄弟を挿入することもできます。どちらもオプションbeforebegin
、beforeend
、afterbegin
およびafterend
を取ります。
例:
var container = document.getElementById('editor'),
firstChild = container.childNodes[1];
var newPre = document.createElement('pre');
newPre.setAttribute("contentEditable", "true");
newPre.innerHTML = "boom";
firstChild.insertAdjacentElement("afterend", newPre);