Javascript Cheerio没有正确穿越?
我有以下代码:Javascript Cheerio没有正确穿越?,javascript,cheerio,Javascript,Cheerio,我有以下代码: var cheerio = require('cheerio'); var html = "<div> <h3>Header 1</h3> <h3>Header 2</h3></div> <h3>Header 3</h3>"; var $ = cheerio.load(html); console.log($('h3').length); // 3 var input = $('h
var cheerio = require('cheerio');
var html = "<div> <h3>Header 1</h3> <h3>Header 2</h3></div> <h3>Header 3</h3>";
var $ = cheerio.load(html);
console.log($('h3').length); // 3
var input = $('h3').first();
console.log(input.text()); // Header 1
input = input.next();
console.log(input.text()); // Header 2
input = input.next();
console.log(input.length); // 0
console.log(input.text()); // ''
var cheerio=require('cheerio');
var html=“头1头2头3”;
var$=cheerio.load(html);
console.log($('h3').length);//3.
var输入=$('h3').first();
console.log(input.text());//标题1
input=input.next();
console.log(input.text());//标题2
input=input.next();
console.log(input.length);//0
console.log(input.text());/“”
诚然,HTML代码不是西方最好的,但我想知道为什么长度打印正确,前两个H3块打印正确,然后当我为第三个头调用next()时,它不存在。然而,如果我
console.log($('h3').last().text())
它打印出“标题3”。我只是不知道如何从之前的h3遍历到它
希望这是有道理的,但我不知道这是故意的,还是行为不端。如果有人能向我解释一下为什么这段代码不能按我的预期工作,我将不胜感激。第一次调用
next
有效,因为您正在抓取第一个h3
元素(从而将您的项目集合限制为1个元素),并寻找兄弟h3
。第二个调用未定义,因为头2
没有额外的同级h3
<div>
<!-- siblings, yay! -->
<h3>Header 1</h3> <!-- var input = $('h3').first(); -->
<h3>Header 2</h3> <!-- input.next() -->
</div>
<!-- all alone :( -->
<h3>Header 3</h3>
var inputs = $('h3');
inputs.each(function () {
console.log($(this).text());
});
// Header 1
// Header 2
// Header 3
console.log(inputs.eq(1).text());
// Header 2
console.log(inputs.eq(0).text());
// Header 1