Поиск JavaScript тега и добирается, это - innerHTML

Это - вероятно, что-то действительно простое, но я просто учусь.

Существует страница с 3 тегами blockquote на нем, и я должен был бы получить innerHTML того, содержащего определенную строку. Я не знаю, как искать/соответствовать строку и получить innerHTML тега, содержащего подобранный результат.

Любая справка ценилась бы!

5
задан David R. 1 April 2014 в 02:42
поделиться

4 ответа

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;
     }
}

:)

Btw было бы гораздо лучше, если бы вы использовали Prorotype JS (что намного лучше, чем jQuery btw):

var el = $$('blockquote').find(function(el) {
    return el.innerHTML.indexOf('The string you are looking for.') !== -1;
});

Конечно, вы могли бы также использовать регулярные выражения для поиска строки, что было бы более полезным (используйте для этого el.match()).

9
ответ дан 18 December 2019 в 07:09
поделиться

Будьте осторожны, используя 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);
  }
}
3
ответ дан 18 December 2019 в 07:09
поделиться

Присвоить идентификатор элементам блок-кавычек можно следующим образом:

HTML:

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

JS:

var quote1 = document.getElementById('bq1').innerHTML;
4
ответ дан 18 December 2019 в 07:09
поделиться

Если вам нужно искать по каждому <блок-цитате> на странице, попробуйте следующее:

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;
}
6
ответ дан 18 December 2019 в 07:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: