0

我正在尝试在<a>元素中获取可用的文本。我已经使用 innerHTML 来检索该内部文本,但在少数<a>元素中,内部 Text 被放置在<span>元素内。

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

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

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

4

3 回答 3

2

innerTexttextContent(取决于浏览器)获取不带跨度标签的元素文本:

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

var content = elem[text];

小提琴

于 2013-09-18T07:36:11.730 回答
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;
于 2013-09-18T07:32:07.503 回答
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;
}

是一个 jsFiddle 来演示上述内容。

澄清一下,document.querySelectorAll仅在 IE8+(和大多数其他现代浏览器)上原生支持,但 polyfills 可用。

于 2013-09-18T07:35:11.363 回答