Greasemonkey脚本开发:基于类选择器实现数值乘法转换
修正商品价格转换的UserScript脚本
嘿,我来帮你搞定这个价格转换的脚本!你的需求是把带有prod-price类的span标签里的价格数值乘以固定系数,同时去掉货币符号,原脚本有几个小问题,我来一步步修正并解释:
原脚本的问题点:
document.getElementsByClassName("prod-price")返回的是元素集合(HTMLCollection),不是单个元素,没法直接用.innerHTML赋值- 直接把元素集合乘以2会导致类型错误,因为集合不是数值类型
- 没处理原内容里的货币符号(比如€),直接相乘会得到无效结果
修正后的完整脚本
// ==UserScript== // @name PriceChanger // @version 1.1 // @grant none // @include *://*.website.com/* // ==/UserScript== // 获取所有带有prod-price类的元素 const priceElements = document.getElementsByClassName("prod-price"); // 遍历每个价格元素进行处理 for (let element of priceElements) { // 提取文本中的纯数字(去掉货币符号、空格等非数字内容) const rawPriceText = element.textContent.trim(); const originalPrice = parseFloat(rawPriceText.replace(/[^0-9.]/g, '')); // 确保提取到的是有效数字,避免处理无效内容 if (!isNaN(originalPrice)) { // 乘以固定系数(这里是2,你可以根据需求修改) const convertedPrice = originalPrice * 2; // 更新元素内容为转换后的数值 element.textContent = convertedPrice.toString(); } }
关键细节说明:
- 用
for...of遍历元素集合,确保每个带prod-price类的元素都被处理 - 用正则表达式
/[^0-9.]/g去掉所有非数字和小数点的字符,不管原价格里是欧元符号、美元符号还是空格,都能精准提取数值 - 加入
!isNaN(originalPrice)的判断,避免页面上出现非价格内容的prod-price元素导致脚本报错 - 使用
textContent而不是innerHTML,更安全且符合需求(我们只需要修改文本内容)
内容的提问来源于stack exchange,提问作者Barkman
相关产品推荐
相关产品推荐

