2009-07-23 290 views
1

我想做什么:调用卸载功能改变使用Javascript将所有span标签更改为标签标签?

<span>some content</span> 

<label>some content</label> 

是否有可能改变的跨度标签与JavaScript的一个标签,标签?如果有可能我该怎么做?

日Thnx,

... DORO

+1

为什么你想这样做? – rahul 2009-07-23 11:04:12

+1

所以我可以添加一个onfocus,它应该可以在opera中工作,但是不会跨度...我需要b/ca用户可以更改内容b/c contenteditable设置为true,但是如果更改不完全正确正确的,它需要逆转到旧的状态...哦,是的,我一定可以使用标签的权利,但页面是动态构建的,我永远不会知道我得到了什么,所以当我有一个跨度contenteditable = true,现在我知道如何将它们更改为标签,即使在歌剧中,这些标签也可以工作。好吧,我很希望:) – doro 2009-07-23 12:16:06

回答

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

编辑:如果你想保持类的名称,编号和这样的,你只是离开了直角形支架:

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

这将打开<span id="mySpan" class="spans"><label id="mySpan" class="spans">

4

首先,你需要获得对SPAN参考元素,那么你可以去替换一个新元素:

HTML:

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

的JavaScript:

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

但我必须给每个跨度我想转换ID“的东西”,对不对? – doro 2009-07-23 12:05:18

+0

你不会想给多个元素赋予相同的id。但是你可以给所有的跨度你想改变一个类名。然后执行`document.getElementsByClassName(“changeSpan”);`,然后循环遍历它们并通过J-P在每个元素上运行代码。 – peirix 2009-07-23 12:13:14

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

(使用jQuery)如果您需要保持之间的转换类:

$("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>