这可能很简单,但我只是在学习。
有一个页面上有 3 个块引用标签,我需要获取包含某个字符串的页面的 innerHTML。我不知道如何搜索/匹配字符串并获取包含匹配结果的标签的 innerHTML。
任何帮助,将不胜感激!
这可能很简单,但我只是在学习。
有一个页面上有 3 个块引用标签,我需要获取包含某个字符串的页面的 innerHTML。我不知道如何搜索/匹配字符串并获取包含匹配结果的标签的 innerHTML。
任何帮助,将不胜感激!
var searchString = 'The stuff in innerHTML';
var elements = document.getElementsByTagName('blockquote')
for (var i = 0; i < elements.length; i++) {
if (elements[i].innerHTML.indexOf(searchString) !== -1) {
alert('Match');
break;
}
}
:)
顺便说一句,如果您使用Prorotype JS(这比 jQuery 顺便说一句要好得多),那么会有一个更好的方法:
var el = $$('blockquote').find(function(el) {
return el.innerHTML.indexOf('The string you are looking for.') !== -1;
});
您当然也可以使用正则表达式来查找字符串,这可能更有用(为此使用 el.match() )。
如果您需要搜索<blockquote>
页面上的所有内容,请尝试以下操作:
function findBlockquoteContainingHtml(matchString) {
var blockquoteElements = document.getElementsByTagName('BLOCKQUOTE');
var i;
for (i = 0; i < blockquoteElements.length; i++) {
if (blockquoteElements[i].innerHTML.indexOf(matchString) >= 0) {
return blockquoteElements[i].innerHTML;
}
}
return null;
}
为 blockquote 元素分配一个 id,然后你可以像这样获得 innerHTML:
HTML:
<blockquote id="bq1">Foo</blockquote>
JS:
var quote1 = document.getElementById('bq1').innerHTML;
innerHTML
使用在标签中搜索文本时要小心,因为这也可能在属性或标签中搜索文本。
您可以使用以下方法找到所有blockquote
元素:
var elems = document.getElementsByTagName("blockquote")
然后您可以查看他们的innerHTML
,但我建议您改为查看他们的textContent
/ innerText
(遗憾的是,这似乎不是跨浏览器的标准化):
for (i in elems) {
var text = elems[i].textContent || elems[i].innerText;
if (text.match(/foo/)) {
alert(elems[i].innerHTML);
}
}