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

如何用原生JavaScript为字符串指定部分添加HTML标签(价格格式转换需求)

问题描述

请注意,该问题此前已有相关解答,但现有方案基于jQuery实现,我需要使用原生JavaScript完成相同功能。

我的具体问题如下:页面中展示的价格字符串对应HTML为<span>60.00</span>,我希望将其转换为<span>60,<sup>00</sup></span>的格式。

我尝试编写的代码如下:

let value = "60.00";
value = value.replace(".", ",");
let values = value.split(',');
var tag = document.createElement("sup");
var text = document.createTextNode(values[1]);
text = tag.appendChild(text);
let text1 = JSON.stringify(text);
alert(values[0]+text1);

运行上述代码后输出结果为60{},无法得到预期的60,⁰⁰效果,请问该如何正确实现需求?


解决方案

你代码出错的核心原因是:创建的<sup>是DOM节点对象,无法直接和普通字符串拼接使用,用JSON.stringify序列化DOM节点只会得到空对象{},自然无法输出预期效果。

以下是两种可直接运行的原生JS实现方案:

方案1:innerHTML实现(简单直观,适合内容安全的场景)

// 选中页面上的价格span元素,可根据实际页面结构调整选择器
const priceSpan = document.querySelector('span');
// 拆分价格的整数和小数部分
const [integerPart, decimalPart] = priceSpan.textContent.split('.');
// 直接赋值innerHTML生成需要的结构
priceSpan.innerHTML = `${integerPart},<sup>${decimalPart}</sup>`;

方案2:纯DOM操作(无XSS风险,安全性更高)

const priceSpan = document.querySelector('span');
const [integerPart, decimalPart] = priceSpan.textContent.split('.');
// 清空原有内容
priceSpan.textContent = '';
// 插入整数部分和逗号
priceSpan.append(document.createTextNode(`${integerPart},`));
// 创建sup节点插入小数部分
const supNode = document.createElement('sup');
supNode.textContent = decimalPart;
priceSpan.append(supNode);

内容的提问来源于stack exchange,提问作者Viira

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 21:18:02