Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/466.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Cheerio没有正确穿越?_Javascript_Cheerio - Fatal编程技术网

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