给一段复杂的html中的每个文字添加一个标签

var test_html = '<p id="test">你忽然<span>你好</span>test</p><p>hire</p><p><b>额</b></p><p><u><b>铁塔爷爷又一伙人</b></u></p><p><b><span style="color: rgb(76, 51, 229);">eat</span></b></p><p align="center"><b><span style="color: rgb(76, 51, 229);">居中杨</span></b></p><p align="left"><b><span style="color: rgb(76, 51, 229);" fsize="medium">你浩特哦are偶家&nbsp;ore农机特特</span></b></p><ol><li><p><b><span style="color: rgb(76, 51, 229);">特体</span></b></p></li><li><p><b><span style="color: rgb(76, 51, 229);">特体</span></b></p></li><li><p><b>热特讨厌哈哈哈<img src="http://static.dev.anoah.com/uploads/onlinedocument/0b/bf/2440417c/6796bf98/7722db4d9541/original.jpg" kesrc="http://static.dev.anoah.com/uploads/onlinedocument/0b/bf/2440417c/6796bf98/7722db4d9541/original.jpg"></b></p></li><li><b>而容易有监听监听<br></b></li></ol>';

因为要对每个文字进行单独处理,怎么给这种复杂的没有规律的html片段中的所有文字添加一个span标签?
类似于将
<p id="test">然<span>你</span>t</p>
变成
<p id="test"><span class="special-flag">然</span><span><span class="special-flag">你</span><span class="special-flag"></span></span><span class="special-flag">t</span></p>

最终的需求是要实现类似于百度阅读app的效果,在页面上拖动选中文本内容,添加笔记之类的。
图片描述

阅读 5k
3 个回答

参考一下那些在线编辑程序的页面

有点眼晕,你看看是不是这样

test_html.replace(/([^\/]>)([^<\/>]+?)(?=<)/ig, function($,$1,$2){ 
    return $1+'<span class="special-flag">'+$2+'</span>'})
})
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题