12 に答える
これがあなたを動かすためのスニペットです:
theParent = document.getElementById("theParent");
theKid = document.createElement("div");
theKid.innerHTML = 'Are we there yet?';
// append theKid to the end of theParent
theParent.appendChild(theKid);
// prepend theKid to the beginning of theParent
theParent.insertBefore(theKid, theParent.firstChild);
theParent.firstChild
内の最初の要素への参照を提供し、その前にtheParent
配置theKid
します。
おそらく、 DOMメソッド appendChild
とについて質問しているのでしょうinsertBefore
。
parentNode.insertBefore(newChild, refChild)
既存の子ノード
newChild
の前にノードをの子として挿入します。(戻ります。)parentNode
refChild
newChild
refChild
nullの場合newChild
、子のリストの最後に追加されます。同等に、そしてより読みやすく、を使用しますparentNode.appendChild(newChild)
。
ここではあまり説明しませんでしたが、要素の最初または最後にコンテンツを追加する方法を尋ねているだけだと思いますか?もしそうなら、これがあなたがそれをかなり簡単に行うことができる方法です:
//get the target div you want to append/prepend to
var someDiv = document.getElementById("targetDiv");
//append text
someDiv.innerHTML += "Add this text to the end";
//prepend text
someDiv.innerHTML = "Add this text to the beginning" + someDiv.innerHTML;
とても簡単。
どんなに複雑であっても生のHTML文字列を挿入したい場合は、次を使用できます。
insertAdjacentHTML
適切な最初の引数を指定します。
'beforebegin' 要素自体の前。 'afterbegin' 要素のすぐ内側、最初の子の前。 'beforeend' 要素のすぐ内側、最後の子の後。 'afterend' 要素自体の後。
ヒント:Element.outerHTML
挿入する要素を表すHTML文字列を取得するためにいつでも呼び出すことができます。
使用例:
document.getElementById("foo").insertAdjacentHTML("beforeBegin",
"<div><h1>I</h1><h2>was</h2><h3>inserted</h3></div>");
注意: insertAdjacentHTML
。が付加されているリスナーは保持されません.addEventLisntener
。
私はこれを私のプロジェクトに追加しました、そしてそれはうまくいくようです:
HTMLElement.prototype.prependHtml = function (element) {
const div = document.createElement('div');
div.innerHTML = element;
this.insertBefore(div, this.firstChild);
};
HTMLElement.prototype.appendHtml = function (element) {
const div = document.createElement('div');
div.innerHTML = element;
while (div.children.length > 0) {
this.appendChild(div.children[0]);
}
};
例:
document.body.prependHtml(`<a href="#">Hello World</a>`);
document.body.appendHtml(`<a href="#">Hello World</a>`);
あなたの人生を単純化するために、あなたはHTMLElement
オブジェクトを拡張することができます。古いブラウザでは機能しない可能性がありますが、間違いなくあなたの生活が楽になります。
HTMLElement = typeof(HTMLElement) != 'undefined' ? HTMLElement : Element;
HTMLElement.prototype.prepend = function(element) {
if (this.firstChild) {
return this.insertBefore(element, this.firstChild);
} else {
return this.appendChild(element);
}
};
したがって、次回はこれを行うことができます:
document.getElementById('container').prepend(document.getElementById('block'));
// or
var element = document.getElementById('anotherElement');
document.body.prepend(div);
prependを使用してドキュメントに段落を追加する例を次に示します。
var element = document.createElement("p");
var text = document.createTextNode("Example text");
element.appendChild(text);
document.body.prepend(element);
結果:
<p>Example text</p>
2017年に私はEdge15とIE12について知っていますが、prependメソッドはDiv要素のプロパティとして含まれていませんが、関数をポリフィルするためのクイックリファレンスが必要な場合は、次のようにします。
HTMLDivElement.prototype.prepend = (node, ele)=>{
try { node.insertBefore(ele ,node.children[0]);}
catch (e){ throw new Error(e.toString()) } }
最新のブラウザと互換性のあるシンプルな矢印機能。
var insertedElement = parentElement.insertBefore(newElement, referenceElement);
referenceElementがnullまたは未定義の場合、newElementは子ノードのリストの最後に挿入されます。
insertedElement The node being inserted, that is newElement
parentElement The parent of the newly inserted node.
newElement The node to insert.
referenceElement The node before which newElement is inserted.
例はここにあります:Node.insertBefore
unshift()を使用してリストの前に追加することもできます
document.write()は良い習慣ではありません。Chromeのような一部のブラウザは、それを使用すると警告を表示します。顧客に提供する場合、コードを使用したくない場合は、悪い解決策になる可能性があります。デバッグコンソールの警告を参照してください。
また、サイトの他の機能にjQueryをすでに使用している顧客にコードを提供する場合、jQueryも悪いことになる可能性があります。すでに別のバージョンのjQueryが実行されていると、競合が発生します。
コンテンツをiframeに挿入し、それを純粋なJSで、JQueryを使用せずに、document.write()を使用せずに行う場合は、解決策があります。
次の手順を使用できます
1.iframeを選択します。
var iframe = document.getElementById("adblock_iframe");
2.フレームに挿入する要素を作成します。たとえば、画像を作成します。
var img = document.createElement('img');
img.src = "https://server-name.com/upload/adblock" + id + ".jpg";
img.style.paddingLeft = "450px";
//scale down the image is we have a high resolution screen on the client side
if (retina_test_media == true && high_res_test == true) {
img.style.width = "200px";
img.style.height = "50px";
} else {
img.style.width = "400px";
img.style.height = "100px";
}
img.id = "image";
3.画像要素をiframeに挿入します。
iframe.contentWindow.document.body.appendChild(img);
これは最善の方法ではありませんが、すべての前に要素を挿入したい場合は、ここに方法があります。
var newElement = document.createElement("div");
var element = document.getElementById("targetelement");
element.innerHTML = '<div style="display:none !important;"></div>' + element.innerHTML;
var referanceElement = element.children[0];
element.insertBefore(newElement,referanceElement);
element.removeChild(referanceElement);