2011-04-21 169 views
4

上午在文本編輯器的工作範圍內粗體,斜體風格,其中的內容可以在一些用戶點擊以下如何獲得一個div

<div>some text <strong>bold text</strong> more <em>italic</em></div> 

現在的形式,我不得不刪除粗體和斜體從div的造型。

如何從div刪除strong和em標籤?

感謝

卡皮爾

+0

點擊div或強/粗文本? – mplungjan 2011-04-21 05:39:24

+0

點擊工具欄上的一個按鈕 – 2011-04-21 06:09:26

+0

啊 - 爲什麼不使用像[tinymce](http://tinymce.moxiecode.com/) – mplungjan 2011-04-21 07:51:27

回答

4

HTML

<div id="foo"> 
<div>some text <strong>bold text</strong> more <em>italic</em></div> 
</div> 

JS

var t = document.getElementById('foo').innerHTML; 
t = t.replace('<strong>', ''); 
t = t.replace('</strong>', ''); 
t = t.replace('<em>', ''); 
t = t.replace('</em>', ''); 
document.getElementById('foo').innerHTML = t; 
4

我不知道,如果你想的jQuery,但它處理這樣的事情很好:

// To remove styles from clicked element. 

$('#editor *').click(function() { 
    $(this).replaceWith($(this).text()); 
}); 
+0

這樣的真正測試過的人問他關於javascript的問題,而不是jquery – 2011-04-21 05:40:59

+2

哦。我會保持它在這裏說服作者,當做元素操作時,vanilla JS很難處理... – Blender 2011-04-21 05:41:59

+0

感謝您的快速回復。 – 2011-04-21 06:04:39

3
var element = document.getElementById('whatever'); 

element.innerHTML = element.innerHTML.replace(/<(strong|em)>(.*?)<\/\1>/g, '$1'); 

jsFiddle

請記住,此div的任何子女的任何活動都將丟失。

+0

+1對於單線程正則表達式解決方案。 – Blender 2011-04-21 05:44:00

+0

-1爲單線正則表達式解決方案......(只是在開玩笑!) – ninjagecko 2011-05-04 22:22:01

2

請勿對此使用正則表達式或其他類型的文本替換。 DOM是一棵樹。對待它,不要害怕它。這是處理這種事情的最安全和最不殘忍的方式。

function removeElements(container) { 
    var elements = container.getElementsByTagName("*"); 

    // Make an array of the strongs and ems 
    var strongsAndEms = []; 
    for (var i = 0, len = elements.length; i < len; ++i) { 
     if (/^(strong|em)$/i.test(elements[i].tagName)) { 
      strongsAndEms.push(elements[i]); 
     } 
    } 

    // Remove the strongs and ems 
    for (var j = 0, el, child; el = strongsAndEms[j++];) { 
     while ((child = el.firstChild)) { 
      el.parentNode.insertBefore(child, el); 
     } 
     el.parentNode.removeChild(el); 
    } 
} 

var div = document.getElementById("foo"); 
removeElements(div); 
+0

我會+1如果你沒有*呃*我的回答... :) – alex 2011-05-04 23:29:29

+0

@alex:嘿。這有點晚了,我沒有申請我通常的自我審查。抱歉。 – 2011-05-05 08:13:15