Javascript js在不修改内联html的情况下将单词包装成跨距

Javascript js在不修改内联html的情况下将单词包装成跨距,javascript,html,Javascript,Html,我在JS中有一个字符串变量,它保存一些文本。有时,所述文本包含HTML标记 我需要做的是将每个单词包装成单独的span标记。例如 这是文本=>这是文本 理想情况下,它应该在不使用JQuery的情况下实现,但不是必需的 我尝试了两种不同的解决方案,包括正则表达式(大部分时间都有效,但并不总是有效) 我使用的是Polymer 2.0和ShadyDOM 编辑 标记也可能具有属性。如: 所以我听说了。=>所以我听说了你不需要正则表达式来完成这个任务。只是一些数组操作 var str = "Your st

我在JS中有一个字符串变量,它保存一些文本。有时,所述文本包含HTML标记

我需要做的是将每个单词包装成单独的span标记。例如

这是文本

=>
这是文本

理想情况下,它应该在不使用JQuery的情况下实现,但不是必需的

我尝试了两种不同的解决方案,包括正则表达式(大部分时间都有效,但并不总是有效)

我使用的是Polymer 2.0和ShadyDOM

编辑

标记也可能具有属性。如:
所以我听说了。
=>
所以我听说了

你不需要正则表达式来完成这个任务。只是一些数组操作

var str = "Your string of info here";

//Create an array with each word in the string
//Map the array wrapping each word in a <span>
//You can also then join the array by adding .join('') to the end
var res = str.split().map(m => {return `<span>${m}</span>`});
var str=“此处的信息字符串”;
//使用字符串中的每个单词创建一个数组
//映射将每个单词包装在一个数组中的数组
//然后还可以通过在末尾添加.join(“”)来加入数组
var res=str.split().map(m=>{return`${m}`});

您可以从字符串创建
DOM
元素,并使用
DOM.childNodes
在所有子节点中循环。 然后将字符串替换为
span

函数更改文本{
var div=document.createElement('div');
div.innerHTML=s;
递归的mchildren(div,true);
var str=div.innerHTML.replace(/spfrnt/g,“”)。replace(/spback/g,“”);
返回str;
}
函数recurseDomChildren(启动、输出){
var节点;
if(start.childNodes){
nodes=start.childNodes;
loopNodeChildren(节点,输出);
}
}
函数loopNodeChildren(节点,输出){
var节点;

对于(var i=0;i您尝试了哪些正则表达式,它们出了什么问题?不幸的是,这种方法不适用于HTML标记具有属性的情况。请查看我对该问题的编辑。在您的解决方案中,我听说了。
=>
我听说了。
您好。这里的问题是,此解决方案不适用于HTML中的属性标记。例如,
这是

文本

=>
“这是文本”

一个很好的观点。我没有完整阅读问题。对此表示抱歉。