javascript - 使用 javascript 更改类的文本
问题描述
我是 Javascript 新手,
我想使用 Javascript 更改某个文本,例如我有:
<div class="main">
<div class="price_box"> 0€ </div>
<div class="price_box"> 100€ </div>
<div class="price_box"> 45€ </div>
</div>
我只想将“0€”更改为“按要求提供价格”,但我能做的就是全部更改。
我用过这个(如果它正确与否,idk)
function PriceOnRequest()
{
x=document.getElementsByClassName("price_box");
/*for(var i = 0; i < x.length; i++){
x[i].innerText="Price On Request"; // Changes all of them
}*/
/*for(x.innerText == '0€'){
x.innerText="Price On Request";
}*/
if(x.innerText == '0€'){
x.innerText="Price On Request";
}
}
解决方案
您可以遍历定价元素并替换文本。
const applyPricing = (selector, zeroText, replacement) =>
document.querySelectorAll(selector).forEach(priceBox => {
if (priceBox.textContent.trim() === zeroText) {
priceBox.textContent = replacement;
}
});
applyPricing('.price_box', '0€', 'Price upon request');
.main { border: thin solid grey; }
.price_box { border: thin solid grey; margin: 0.5em; padding: 0.5em; }
<div class="main">
<div class="price_box"> 0€ </div>
<div class="price_box"> 100€ </div>
<div class="price_box"> 45€ </div>
</div>
或者,您可以使用 aMap
进行多次替换。
const applyPricing = (selector, replMap) =>
document.querySelectorAll(selector).forEach(priceBox => {
const key = priceBox.textContent.trim();
if (replMap.has(key)) {
priceBox.textContent = replMap.get(key);
}
});
const replMap = new Map(Object.entries({
'0€': 'Price upon request',
// More replacements ...
}));
applyPricing('.price_box', replMap);
.main { border: thin solid grey; }
.price_box { border: thin solid grey; margin: 0.5em; padding: 0.5em; }
<div class="main">
<div class="price_box"> 0€ </div>
<div class="price_box"> 100€ </div>
<div class="price_box"> 45€ </div>
</div>
推荐阅读
- java - 使用maven构建的jboss服务器中的.war文件的角度路由问题
- docker - Docker 无法协调 Kubernetes 插件组件的状态
- php - 如何将数据存储到数据库中?(一对一关系 Laravel)
- symfony-3.4 - NelmioApiDocBundle 不起作用“规范中没有定义操作!” Symfony 3.4
- mysql - 如何在我的 RaspberryPi 上设置 gammu-smsd.service
- excel - 单击另一个单元格并进行其他一些修改更改后,我需要在上一个单元格上运行宏
- android - Android Studio 错误 FAILURE:构建失败并出现异常
- android - 设置 android studio logcat 过滤器只显示异常和自定义日志
- cordova - 为什么 Android WebView 在未卸载时会发送“beforeunload”事件?
- ms-access - Microsoft Access 子窗体在实际更新数据之前作为沙箱