【发布时间】:2021-08-01 08:22:20
【问题描述】:
我正在尝试做一些非常简单的事情,但我很尴尬地说我无法弄清楚。我正在寻找以“@”或“#”开头的字符串中的单词,并将该单词的样式颜色设为蓝色。该字符串来自 API,因此我最初无法在跨度内设置单词。
我尝试使用带有正则表达式的字符串replace() 来查找以“@”开头的单词,并将其替换为具有相同文本但颜色为蓝色的跨度。我已经看到这个答案在整个 SO 中弹出,但是当我尝试实现它时,整个跨度都呈现为文本,而不仅仅是文本本身。此外,文本没有将颜色更改为蓝色——我得到的是<span style='color: blue;'>@user42</span>,而不仅仅是@user42。
我使用了不同的正则表达式来删除跨度以文本形式呈现到页面,但这似乎我错过了一些东西并做额外的工作来弥补我不知道的东西。
这是我尝试在不使用.replace() 的情况下解决它的方法,但我无法将新创建的跨度插入到与要删除的单词相同的位置。
tweetText[0].split(' ').forEach((word) => {
if (word.innerText.startsWith('@') || word.innerText.startsWith('#')) {
const span = document.createElement('span');
span.innerText = word;
span.style.color = 'blue';
}
});
如何使用replace() 查找以“@”或“#”开头的单词并将其替换为相同的文本,但颜色不同?
【问题讨论】:
标签: javascript html css dynamic