Javascript 如何在文本编辑器中换行(在span中)单词
我有一个javascript变量,如下所示:Javascript 如何在文本编辑器中换行(在span中)单词,javascript,jquery,Javascript,Jquery,我有一个javascript变量,如下所示: var text = "A <mark id='1'>businessman</mark> should be able to <mark id='1'>manage</mark> his business matters"; var text=“一个商人应该能够管理他的商业事务”; 我想用不同的id将每个单词包装在span元素中,但将已包装的单词保留在标记中。像这样: text = "<sp
var text = "A <mark id='1'>businessman</mark> should be able to <mark id='1'>manage</mark> his business matters";
var text=“一个商人应该能够管理他的商业事务”;
我想用不同的id将每个单词包装在span元素中,但将已包装的单词保留在
标记中。像这样:
text = "<span id='1'>A </span><mark id='1'>businessman</mark><span id='2'>should</span><span id='3'>be </span><span id='4'>able </span><span id='5'>to </span><mark id='2'>manage</mark><span id='6'>his </span><span id='7'>business </span><span id='8'>matters</span>";
text=“一个商人应该能够管理他的商业事务”;
我希望所有这些都在javascript或jquery中实现,但无法实现。如果你们能帮助我,那就太好了
谢谢。以下快速脏方法从
元素中删除空格,这样整个字符串就可以在空格上拆分,允许根据需要包装单个单词,然后将其重新连接在一起,最后还原并重新编号
元素:
var text=“一个商人应该能够管理他的商业事务”;
var指数=1;
var-markIndex=1;
var result=text.replace(//g',)
.拆分(“”)
.地图(功能(五){
返回v.slice(0,6)=''v:''v+''
})
.加入(“”)
.replace(//g,function(){return”“});
控制台日志(结果)
以下快速脏方法从
元素中删除空格,以便整个字符串可以在空格上拆分,允许根据需要包装单个单词,然后将其重新连接在一起,最后还原并重新编号
元素:
var text=“一个商人应该能够管理他的商业事务”;
var指数=1;
var-markIndex=1;
var result=text.replace(//g',)
.拆分(“”)
.地图(功能(五){
返回v.slice(0,6)=''v:''v+''
})
.加入(“”)
.replace(//g,function(){return”“});
控制台日志(结果)代码>试试这个
函数removeMptyString(k){
返回k!='';
}
函数getWordsArray(div){
var rWordBoundary=//[\s\n\t]+//;//按制表符、换行符、空格拆分
var输出=[];
对于(var i=0;i
span.txtSpan{
填充:2px;
显示:内联块;
文字装饰:下划线;
}
一个商人应该能够管理他的商业事务
试试这个
函数removeMptyString(k){
返回k!='';
}
函数getWordsArray(div){
var rWordBoundary=//[\s\n\t]+//;//按制表符、换行符、空格拆分
var输出=[];
对于(var i=0;i
span.txtSpan{
填充:2px;
显示:内联块;
文字装饰:下划线;
}
一个商人应该能够管理他的商业事务
我采用了一种更简单的方法,即使用浏览器的原生DOM来解析和转换
这里的想法是:
创建一个空元素,不要将其添加到文档中
将要转换和包装的文本设置为temp元素的innerHTML
从temp元素的childNodes
创建一个数组(在设置innerHTML
时创建)
如果childNode有一个nodeValue
,则它是一个未包装在标记中的文本节点。在这种情况下,创建一个新的跨度图元
如果节点已经包装在元素中,只需返回元素即可
在执行所有这些操作时,请将ID重新映射到数组中的索引。这样,它们是独一无二的
由于您正在设置元素的innerHTML,因此DOM实际上会修复任何错误,从而获得完美的HTML:)
var text=“一个商人应该能够管理他的商业事务”;
const tempElement=document.createElement('div');
tempElement.innerHTML=文本;
让final=Array.from(tempElement.childNodes).map((节点,索引)=>{
if(node.nodeValue){//如果节点是文本节点
让newSpanElement=document.createElement('span');
newSpanElement.id=index;//分配一个id
newSpanElement.innerText=node.nodeValue;
返回消息面板;
}
//否则它在另一个元素中
node.id=index;//重新分配id
返回节点;
}).map(node=>node.outerHTML).join(“”);
控制台日志(最终)代码>我采用了一种更简单的方法,即使用浏览器的本地DOM来解析和转换
这里的想法是:
创建一个空元素,不要将其添加到文档中
将要转换和包装的文本设置为临时文本的innerHTML