使用RegEx删除Text中的<span>和</span>

时间:2013-09-18 07:29:27

标签: javascript regex

我正在尝试在<a>元素中提供文本。我使用innerHTML来检索内部文本,但在少数<a>个元素中,内部Text被放置在<span>元素内。

在检索文本值时,我将其作为<span>sample text</span>作为输出字符串。任何人都可以帮我删除输出字符串中的<span></span>使用RegEx,这样我的输出字符串中只能有sample text

<a href="#"><span>Sample Text</span></a>

注意:我没有在页面中使用任何Javascript库。

3 个答案:

答案 0 :(得分:2)

innerTexttextContent(取决于浏览器)获取没有span标记的元素文本:

var elem = document.getElementsByTagName('a')[0],
    text = ('innerText' in elem)? 'innerText' : 'textContent';

var content = elem[text];

FIDDLE

答案 1 :(得分:0)

如果你可以包含jQuery,你可以使用 - $("a").text()而不使用任何正则表达式。

使用纯JavScript -

/* elem you can get in many ways, by id, by tagname or by class etc.
   I am using tagName for your specific case
*/
var elem = document.getElementsByTagName('a')[0],

/* use innerText or textContent, whichever is available in browser */     
var content = elem.innerText || elem.textContent;

答案 2 :(得分:0)

您可以使用querySelectorAll查找包含<a>子项的所有<span>代码,并根据需要获取该文本:

var elems = document.querySelectorAll("a > span");
for(var e in elems) {
  var element = elems[e];
  var aTag = element.parentNode;
  if(aTag.innerText) aTag.innerText = element.innerText;
  else aTag.textContent = element.textContent;
}

Here是一个证明上述内容的方法。

为了澄清,document.querySelectorAll仅在IE8 +(and most other modern browsers)上本机支持,但可以使用polyfill。