替换 cheerio 选择器中的每个节点
Replacing each node in cheerio selector
我正在使用 cheerio.js 来解析一些 HTML 文档,但我遇到了某些问题。
问题是我正在使用的 HTML 文件包含以下代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>
</title>
</head>
<body>
<p>Text 1</p>
<p>Text 2</p>
</body>
</html>
现在,我还有一个 javascript 项目数组,如下所示:
var items = ["<h2>orange</h2>", "<h2>mango</h2>"];
我想做的只是用项目数组中的相应项目替换每个 P 标签,即:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>
</title>
</head>
<body>
<h2>orange</h2>
<h2>mango</h2>
</body>
</html>
到目前为止我尝试了什么:
var selections = $("p");
for ( let index = 0; index < selections.length; index++ ) {
selections[index].replaceWith(items[index])
}
但是它说函数 replaceWith() 无效
解决方案:
使用 each 方法,可以轻松处理特定元素
解决上述问题:
var items = ["<h2>orange</h2>", "<h2>mango</h2>"];
$("p").each((index, element) => $(element).replaceWith(items[index]))
基本上每个方法都会调用一个回调函数,其中 element 是该特定元素的选择器,index 是该项目在该选择中的位置。
我正在使用 cheerio.js 来解析一些 HTML 文档,但我遇到了某些问题。
问题是我正在使用的 HTML 文件包含以下代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>
</title>
</head>
<body>
<p>Text 1</p>
<p>Text 2</p>
</body>
</html>
现在,我还有一个 javascript 项目数组,如下所示:
var items = ["<h2>orange</h2>", "<h2>mango</h2>"];
我想做的只是用项目数组中的相应项目替换每个 P 标签,即:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>
</title>
</head>
<body>
<h2>orange</h2>
<h2>mango</h2>
</body>
</html>
到目前为止我尝试了什么:
var selections = $("p");
for ( let index = 0; index < selections.length; index++ ) {
selections[index].replaceWith(items[index])
}
但是它说函数 replaceWith() 无效
解决方案:
使用 each 方法,可以轻松处理特定元素
解决上述问题:
var items = ["<h2>orange</h2>", "<h2>mango</h2>"];
$("p").each((index, element) => $(element).replaceWith(items[index]))
基本上每个方法都会调用一个回调函数,其中 element 是该特定元素的选择器,index 是该项目在该选择中的位置。