2017-07-13 4 views
2

私は要素の前に普通のjavascriptを挿入する方法を探しています。JS insertBefore()と文字列を渡すにはhtmlが含まれています

私はフッター要素があります。

$(footer).before(string) 
:私は単にこれを行うだろうjQueryので

var string = "<div class='sun'><p>hi and more things</p>...</div>" 

//html 
<footer> 
    ... 
</footer> 

// js 
var footer = document.querySelector('footer') 

を、私はそれの前にHTMLを含むこの文字列を追加したいです

しかし、私はどのようにプレーンなjavascriptでそれを行うことができますか?文字列をNODEに変換して表示する方法は?

+0

のinsertBefore()を使用すると、使用できる機能です。 –

答えて

2

あなたが.insertAdjacentHTML('beforebegin', string)

を使用することができます

var string = "<div class='sun'><p>hi and more things</p>...</div>" 
 

 
document.querySelector('footer').insertAdjacentHTML('beforebegin', string);
<footer>Footer</footer>

1
var fragment = document.createDocumentFragment(); 
fragment.innerHTML = "<div class='sun'><p>hi and more things</p>...</div>"; 
var footer = document.querySelector('footer'); 
document.body.insertBefore(fragment, footer); 
1

DOMにcreateElement()代わりのstring element creationで行うこの.Betterのように試してみてください

parentNode.insertBefore(newnode, existingnode)

var footer = document.querySelector('footer') 
 

 
var string = document.createElement('div') 
 
string.class='sun' 
 
string.innerHTML ='<p>hi and more things</p>' 
 

 
document.body.insertBefore(string,footer)
<footer> 
 
    footer 
 
</footer>

+0

ありがとう、ちょっと不思議なこと:なぜinsertAdjacentHTMLを使用するよりも優れていますか? – Dudis

+0

私は 'insert'関数ではなく、要素の作成について言及しました – prasanth

関連する問題