我这样做了:
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?
答案 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"