javascript - 为字符串的特定部分着色
问题描述
我正在尝试为字符串的特定部分着色,这就是我目前所拥有的:
function SpecialColor(num) {
const color = document.getElementById(`alignColor${num}`).value;
let realnum = num - 1;
const input = document.getElementById("rolealign");
const splited = input.innerHTML.split(" ");
let result = input.innerHTML;
let winner = splited[realnum];
result.replace(winner, `<span style="color:${color};"> ${winner} <span>`);
console.log(result);
input.innerHTML = result;
}
假设字符串是Miki Mouse
.
没发生什么事。
结果 - 保持为Miki Mouse
赢家 -Miki
拆分 -["Miki", "Mouse"]
颜色 - 从颜色输入中取出的值。
有人可以向我解释为什么我的代码不起作用,并向我指出其他一些问题吗?谢谢。
解决方案
问题是这条线
result.replace(winner, `<span style="color:${color};"> ${winner} <span>`);
什么都不做——它用 HTML 标记创建一个新字符串,然后这个新字符串没有分配给任何东西,所以它再也不会被使用,很快就会被垃圾回收。原语,包括字符串,是不可变的,所以你不能.replace
就地 - 你必须明确地分配给一个新变量:
function SpecialColor(num) {
const color = document.getElementById(`alignColor${num}`).value;
const realnum = num - 1;
const input = document.getElementById("rolealign");
const splited = input.innerHTML.split(" ");
const result = input.innerHTML;
const winner = splited[realnum];
const htmlResult = result.replace(winner, `<span style="color:${color};"> ${winner} <span>`);
console.log(htmlResult);
input.innerHTML = htmlResult;
}
推荐阅读
- android - 您的应用尚未获准加入亲子同乐,并且更新未在 Google Play 上发布
- php - 从 created_at 字段获取日期和时间
- git - 从 Bitbucket 克隆存储库的特定文件夹
- php - 如何使用 htaccess angular 4 prod 重定向除两个文件夹内容之外的所有请求
- gulp - 如何在服务工作者中缓存 webp 图像?
- css - 如何文本对齐跨度/标签文本端点应该垂直相同?
- python - 每当我创建一个 venv 然后 pip freeze 仍然显示所有全局包
- node.js - 需要一些关于 Promise 中的 Promise 的建议以及如何更好地编写它
- javascript - 为什么 React Fibre 会多次调用 componentWillMount?
- ruby-on-rails - Rails 文件仍然缓存在生产环境中 - 有时