You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 06:50:37