54

次のようにjsでinsertBeforeを使用しようとしています:

var p = document.createElement("p");
p.innerHTML = "test1";
document.body.insertBefore(p, null);

var p = document.createElement("p");
p.innerHTML = "test2";
document.body.insertBefore(p, null);

しかし、それは最後の p 要素を body タグを閉じる直前に追加することになります。それを使用して、開いたときに一番上に追加されるようにするにはどうすればよいでしょうか? したがって、最後に追加された要素が body タグ内の最初の要素になります。

私は試した:

document.body.insertBefore(p, document.getElementsByTagName('body')[0]);

しかし、firebug ショー:

ノードが見つかりませんでした" コード: "8

4

4 に答える 4

100

bodyプロパティを使用して、要素の最初の子を取得できfirstChildます。あとは参考にしてください。

const p = document.createElement("p");
p.textContent = "test1";
document.body.insertBefore(p, document.body.firstChild);

私は理由のためにあなたのコードを近代化しました:)

于 2011-05-16T06:32:07.307 に答える
3

何かの前に挿入する必要があります。document.getElementsByTagName('body')[0] body 要素です(構文は、すべてのブラウザーで body 要素を取得するためのちょっとしたトリックです) 1 . ボディに挿入する場合は、その最初の要素の前に挿入します。それは次のようになります。

var body   = document.body || document.getElementsByTagName('body')[0],
    newpar = document.createElement('p');
newpar.innerHTML = 'Man, someone just created me!';
body.insertBefore(newpar,body.childNodes[0]);

1 一部のブラウザではdocument.body、その他document.documentElementなどですが、すべてのブラウザでタグ名はbody

于 2011-05-16T06:44:28.823 に答える