5

这可能很简单,但我只是在学习。

有一个页面上有 3 个块引用标签,我需要获取包含某个字符串的页面的 innerHTML。我不知道如何搜索/匹配字符串并获取包含匹配结果的标签的 innerHTML。

任何帮助,将不胜感激!

4

4 回答 4

11
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() )。

于 2009-12-30T17:47:01.877 回答
6

如果您需要搜索<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;
}
于 2009-12-30T17:48:54.293 回答
4

为 blockquote 元素分配一个 id,然后你可以像这样获得 innerHTML:

HTML:

<blockquote id="bq1">Foo</blockquote>

JS:

var quote1 = document.getElementById('bq1').innerHTML;
于 2009-12-30T17:45:34.703 回答
3

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);
  }
}
于 2009-12-30T17:57:13.573 回答