【发布时间】:2022-01-12 15:35:10
【问题描述】:
我有一些动态复制文本,一个字符串,其中包含一些用于换行和样式的 HTML 标记。例如:“This is a sample <b>piece of text</b> string”。
我希望遍历文本,以便可以将每个字符包装在 <span> </span> 标签中,以便为每个字符设置动画。但是,我需要能够忽略 HTML 标记,例如上面的 <b></b> 标记,以便与这些标记关联的任何/所有中断或样式保持不变......?
我可以在文本字符串上运行一个简单、干净的 for of 循环,以便将所有内容包装在 span 标签中,然后将结果推送到我想要的 div,见下文:
textString = "This is a sample <b>piece of text</b> string."
for (let char of textString) {
let span = document.createElement('span');
span.textContent = char;
let test = document.querySelector("#root");
test.appendChild(span);
}
这会将字符串中的所有内容都包含在一个 span 标签中,但随后标签显然会显示在屏幕上 - 这不是我需要的!
我知道这个正则表达式:str.replace( /(<([^>]+)>)/ig, ''); 将删除字符串中的所有 HTML 标签,但是,正如我所说,我需要标签实际上保留在原位以进行样式设置?
对此的任何帮助将不胜感激...????????
P.S.:HTML 标记必须保留/替换它们原来的位置并且我不能只是在之后设置样式的原因是因为我收到的文本字符串来自已在其中输入标记的提要,并且它们被用于创建输入到创意 HTML5 横幅广告中的部分文本的换行符和颜色样式。
【问题讨论】:
-
letterize.js?可能还有其他选择,这只是第一个发现。目前,您的问题看起来您还没有搜索现有的解决方案,这对任何人的帮助都没有太大的激励作用。如果您已经(重新)搜索过,请将结果添加到问题中,即使它们没有帮助。重要的是要知道哪些内容对您没有帮助以及原因。详情请见How to Ask。
-
OP 请提供简化的示例代码,其中显示了最基本的输入字符串值以及转换后的预期结果。
-
@tao 我没有包括我研究过的所有内容,因为我只想解决问题的核心,我很抱歉。我看过 letterize.js 这很酷,但正如我在最初的问题中所说的那样。这是针对 HTML5 横幅广告的,Google 平台不允许我添加该外部库或将其安装到非常严格的原始文件中。我实际上将 GSAP 3 用于我的动画,并试图让 SplitText 为我完成这项工作,但遇到了同样的问题,它没有忽略标签并将它们留在原处!
标签: javascript arrays loops iterator