Cheerio: перебираем дочерние элементы и вызываем html()

#javascript #cheerio

#javascript #cheerio

Вопрос:

У меня есть следующий HTML, который был передан в Cheerio:

 <h1 id="heading1">heading1</h1>
<p>text</p>
 

Вывод $.root().html() выглядит следующим образом:

 <html><head></head><body><h1 id="heading1">heading1</h1>
<p>text</p>
</body></html>
 

Мне нужно перебирать дочерние элементы body и вызывать .html() для каждого дочернего элемента, отличного от h1, и делать что-то еще с каждым дочерним элементом h1.

Важно, чтобы я перебирал элементы по порядку, я не могу выбрать все дочерние элементы body и .html(), отличные от h1, все сразу.

Я пробовал это:

 var children = $("body").first().children();
for(var i = 0; i < children.length; i  ){
    console.log(children[i].html()); // children[i].html() is not a function
}
 

но я не могу вызвать .html() после выбора дочернего элемента из массива. .html() также не является функцией при использовании дочерних элементов.each.

.html() — это функция, если вместо получения элемента из массива с помощью [i] я использую .first() , но, очевидно, это работает только для первого элемента.

Ответ №1:

Вероятно, это то, что вы ищете,

 var children = $("body").first().children(":not(h1)"); // Select all non-h1 children
for(var i = 0; i < children.length; i  ){
    console.log($(children[i]).html()); // Get jquery object from dom element
}
 

Ответ №2:

вы можете использовать это решение

 var children = $("body").first().children(/* add your expression as string whether you want the header or not*/);


for(var i = 0; i < children.length; i  ){
    console.log($(children[i]).html()); 
}