Это - вероятно, что-то действительно простое, но я просто учусь.
Существует страница с 3 тегами blockquote на нем, и я должен был бы получить 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;
}
}
:)
Btw было бы гораздо лучше, если бы вы использовали Prorotype JS (что намного лучше, чем jQuery btw):
var el = $$('blockquote').find(function(el) {
return el.innerHTML.indexOf('The string you are looking for.') !== -1;
});
Конечно, вы могли бы также использовать регулярные выражения для поиска строки, что было бы более полезным (используйте для этого el.match()).
Будьте осторожны, используя 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);
}
}
Присвоить идентификатор элементам блок-кавычек можно следующим образом:
HTML:
<blockquote id="bq1">Foo</blockquote>
JS:
var quote1 = document.getElementById('bq1').innerHTML;
Если вам нужно искать по каждому <блок-цитате>
на странице, попробуйте следующее:
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;
}