Мне нужно получить весь контент на HTML-странице для этих тегов в массив.
Для этого я использую этот код
var myregexp = /(<li class="mortadela">)(+?)(<\/li>/;
var match = myregexp.exec(html_text);
Но это не работает для меня.
Если вы можете использовать jQuery (или Zepto.js), ваша жизнь будет 8000+ проще:
var mortadelaValues = [];
$('.mortadela').each(function(){
var content = $(this).html();
mortadelaValues.push(content);
});
console.log(mortadelaValues);
Обратите внимание, что я использую $(this).html()
для содержимого. Это позволяет получить любую разметку внутри каждого .mortadela
. Если вам нужен только текст, вы можете заменить его на $(this).text()
.
Рабочий пример на JS Bin.
Если вы не можете использовать эти библиотеки, вам понадобится немного больше работы:
var mortadelaValues = [];
var mortadelas = document.getElementsByClassName('mortadela');
var mCount = mortadelas.length;
for( i=0; i < mCount; i++){
var content = mortadelas[i].innerHTML;
mortadelaValues.push(content);
}
console.log(mortadelaValues);
Концепция такой же, но мы используем родную document.getElementsByClassName
и for
, вместо селектора JQuery и .each()
функций. Опять же, если вам нужен только текст, а не разметка, вы можете просто заменить innerHTML
на textContent
.
Рабочий пример на JS Bin.
Будьте предупреждены, что поддержка document.getElementsByClassName
ограничена более новыми браузерами (поддержка IE6-8 не поддерживается).