2009-07-23 4 views
1

すべてのスパンタグをJavascriptでラベルタグに変更しますか?私が何をしたいか

<label>some content</label> 

<span>some content</span> 

を変更するためにアンロード関数を呼び出すには、JavaScriptを使用して、ラベル、タグにスパン・タグを変更することが可能ですか?可能であれば、どうすればいいのですか?

のthnx、

... DORO

+1

なぜこれをやりたいですか? – rahul

+1

私はオペラでもうまくいくはずのonfocusを追加することができますが、スパンではうまくいきません... b/caユーザーはコンテンツを変更できますb/c contenteditableはtrueに設定されていますが、それは古い状態に戻す必要がある...ああ、ええ、私は確かに最初の場所でラベルを使用することができますが、ページは動的に構築され、私は何を得るのかわからないので、 contenteditable = true、私は今、オペラでもonfocusがうまく動作するラベルに変更する方法を知っています...まあ、私は望んでいた:) – doro

答えて

1

<span id="mySpan" class="spans">を向けるだろうそして、あなたはjQueryのを使用している場合は、replaceWith()を使用することができます

jQuery.each($("span"), function() { 
    $(this).replaceWith("<label>" + $(this).text() + "</label>"); 
}); 

で詳細情報:あなたはSPANへの参照を獲得する必要がhttp://docs.jquery.com/Manipulation/replaceWith

2

あなたはreplace()を使用することができます。詳細情報here

私は正規表現で非常に良いではないので、私が書くために正確に何を伝えることはできませんが、の線に沿って何か:

var divHTML = getElementById("myDiv"); //The div which contains your spans 
divHTML.innerHTML.replace(/<span>/gi, "<label>"); 
divHTML.innerHTML.replace(/<\/span>/gi, "</label>"); 

は、この上で私バストしないでください、しかし:P

編集:あなたは、クラス名、IDおよび、そのようなを維持したい場合、あなたは、単に右アングル・ブラケットを除外:

divHTML.innerHTML.replace(/<span/gi, "<label"); 

これは<label id="mySpan" class="spans">

4

ファースト要素を追加すると、新しい要素に置き換えることができます。

HTML:

<span id="something">Content</span> 

のJavaScript(jQueryのを使用して)

var span = document.getElementById('something'); 
var label = document.createElement('label'); 
label.innerHTML = span.innerHTML; 
span.parentNode.replaceChild(label, span); 
+0

しかし、私はすべてのスパンを与えなければならなかった私はid "何か"、右に変換したいですか? – doro

+0

複数の要素に同じIDを渡すことは望ましくありません。しかし、あなたはクラス名を変更したいすべてのスパンを与えることができます。その後、 'document.getElementsByClassName(" changeSpan ");'を実行し、それらをループし、各要素のJ-Pでコードを実行します。 – peirix

0
document.body.innerHTML = 
    document.body.innerHTML. 
     replace(/<span>/g, '<label>'). 
     replace(/<\/span>/g, '</label>'); 
+0

は動作しません...ごめんなさい – doro

+0

小さなエラーがありましたが、これは間違いなく動作します – RaYell

2

あなたは変換の間のクラスを維持する必要がある場合:

$("span").each(function(){ 
    so_classes = $(this).attr("class"); 
    so_value = $(this).html(); 
    so_newLabel = $("<label></label>").html(so_value); 
    if (so_classes.length > 0) { 
     $(so_newLabel).attr("class",so_classes); 
    } 
    $(this).replaceWith(so_newLabel); 
}); 

この

には、この

<span>Hello World</span> 
<span class="bigger"><strong>Hello World!</strong></span> 
<span class="big blue">Hello, <em>World</em>.</span> 

に変換

<label>Hello World</label> 
<label class="bigger"><strong>Hello World!</strong></label> 
<label class="big blue">Hello, <em>World</em>.</label> 
+0

so_classes行をコピー/変更すると、id値も保持できます。 – Sampson