如何在JavaScript中解析这段innerHTML?

时间:2014-08-01 13:40:15

标签: javascript html innerhtml

我这样做了:

var blah = document.getElementById('id').getElementsByClassName('class')[0].innerHTML;

现在我在吧:

<a class="title" href="http://www.example.com/" tabindex="1">Some text goes here</a> <span class="domain">(<a href="/domain/foobar.co.uk/">foobar.co.uk</a>)</span>

我想使用JS(没有jQuery)从HTML中读取字符串“Some text goes here”。我无法访问该网站的HTML。我正在解析一个网页,为浏览器扩展注入JS。

我是否只需要将其解析为字符串并从&gt;之间找到我的文本和&lt;或者有没有办法解析JS中的innerHTML?

2 个答案:

答案 0 :(得分:6)

我假设您拥有的基本HTML标记:

<div id="id">
    <div class="class">
        <a class="title" href="http://www.example.com/" tabindex="1">Some text goes here</a> <span class="domain">(<a href="/domain/foobar.co.uk/">foobar.co.uk</a>)</span>
    </div>
</div>

所以选择锚点并阅读文本

var theAnchorText = document.getElementById('id').getElementsByClassName('class')[0].getElementsByTagName("a")[0].textContent;

如果您需要支持IE8

var theAnchor = document.getElementById('id').getElementsByClassName('class')[0].getElementsByTagName("a")[0];
var theAnchorText = theAnchor.textContent || theAnchor.innerText;

如果您使用的是现代浏览器,querySelector会让它更清晰

var theAnchorText = document.querySelector("#id .class a").textContent;

答案 1 :(得分:0)

你可以采用这两种方式。临时DOM元素上的正则表达式或textContent

var foo = "<b>bar</b>";

function regexpStrip(str) {
  return str.replace(/<[^>]*>/g, '');
}

function parseViaDOM(str) {
  var el = document.createElement('div');
  el.innerHTML = str;
  return el.textContent;
}

console.log(regexpStrip(foo)); // => "bar"
console.log(parseViaDOM(foo)); // => "bar"