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 btwよりもはるかに優れています)を使用する場合は、はるかに優れた方法があります。

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

ブロッククォート要素に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 に答える