javascript - 如何在javascript中查找id和设置属性
问题描述
试图通过 fs 从 html 内容中设置属性值但不起作用。如何使用 javascript 或 nodejs 做到这一点。
公共/index.html:
<!DOCTYPE html>
<html>
<body>
<h1>My First Heading</h1>
<p>My first paragraph.</p>
<div>
<a href="#" id="reset">Link</a>
</div>
</body>
</html>
应用程序.js:
var fs = require('fs');
fs.readFile('./public/index.html', { encoding: 'utf-8' }, function(err, html) {
if (err) {
console.log(err);
} else {
html.find('#reset').setAttribute("href", "http://localhost:4200/home/");
}
});
解决方案
您可以cheerio
像提到的@Quentin 一样使用。或者您可以为html 文件中的属性
添加占位符。href
<div id="reset" href="%%RESET_PLACEHOLDER%%">content</div>
然后您可以使用方法替换占位符string.replace()
。
const fs = require('fs');
const path = __dirname + '/public/index.html'; //file path
fs.readFile(path, {encoding: 'utf8'}, (err, data) => {
let dataToWrite = data.replace(/%%RESET_PLACEHOLDER%%/g, 'hrefVal');
fs.writeFile(path, dataToWrite, (err) => {
console.log('file written');
});
});
推荐阅读
- vert.x - 在具有全双工 ReadStream 和 WriteStream 的 GRPC 的情况下发送错误
- javascript - 尽管 http 200 服务器发送事件错误
- python - 未定义符号:_ZTVN10__cxxabiv120__si_class_type_infoE:当通过 python 导入 c++ 方法时
- sql - Oracle 序列 - 如果序列生成表中已经存在的数字会发生什么
- cytoscape.js - Border-Shadow 并减小 cytoscape 中父元素 css 的大小
- python - 如何使用`ColumnTransformer`?
- excel - VBA - 从多个文本文件中导入 n 行
- floating-point - 什么是矢量浮点 (VFP)?
- javascript - 在父刷新 React Native 时更新子组件数据
- java - 二分查找找不到数组列表中的第一个值