2009-05-09 6 views
120

私はDOMの要素を置き換えることを検討しています。たとえば、 "SPAN"と置き換えたい "A"要素があります。Javascriptを使用してDOM要素を置き換える方法はありますか?

どうすればいいですか? replaceChild()を用いて

+3

'target.replaceWith(要素);' DOMは、ESで何を持っているSPECんこの – Gibolt

+0

@Giboltを行うには、現代(ES5 +)の方法ですか?さらに、ES5は9年前にリリースされましたが、まだDOM標準の一部ではありません。 – destoryer

答えて

167

は:

<html> 
<head> 
</head> 
<body> 
    <div> 
    <a id="myAnchor" href="http://www.stackoverflow.com">StackOverflow</a> 
    </div> 
<script type="text/JavaScript"> 
    var myAnchor = document.getElementById("myAnchor"); 
    var mySpan = document.createElement("span"); 
    mySpan.innerHTML = "replaced anchor!"; 
    myAnchor.parentNode.replaceChild(mySpan, myAnchor); 
</script> 
</body> 
</html> 
+7

この例は機能しません。スクリプトブロックを本体の最後に置いて、動作させる必要があります。さらに、楽しみのために:操作の後に[alert(myAnchor.innerHTML)]という行を追加してみてください。 – KooiInc

+0

アンカーのStackOverflowでスペルミスが発生しましたinnerText – rahul

+5

ルートhtml要素の場合はどうか – lisak

50
var a = A.parentNode.replaceChild(document.createElement("span"), A); 

要素を置換されています。

+0

@Bjornからの回答Tiplingは実際には機能しません。これはKooiIncの(正しい!)答えでもあり、正しい、コメントです。今それは動作します! ;-)両方にTx! –

17

A.replaceWith(スパン)

一般的な形式:以前の方法よりもきれい/

target.replaceWith(element); 

ウェイより良いです。あなたのユースケースについては

A.replaceWith(span); 
+10

IE11またはEdge 14ではサポートされていません(現在:2016-11-16)。 – jor

+2

Googleのクロージャーまたは別のトランスバイヤーを使ってES5に変換してみてください。 – Gibolt

+2

完全に同意しますが、IE11とEdge 14は古いものではありません。 – jor