javascript - 如何拆分跨度标签?
问题描述
我最近和编辑器有什么问题?
我有一个跨度
<span>123456789<span>
我选择了456个区域进行分割,我想达到这个效果
<span>123</span>456<span>789</span>
我应该怎么办?
1.用鼠标选择 在此处输入图像描述
2.点击粗体 在这里输入图片描述
3.分割效果 在此输入图片说明
解决方案
我想我找到了办法!!!
window.onload = function(){
var oBtn = document.querySelector('#btn');
oBtn.onclick = function(){
var range = getRangeAt();
console.log(range.commonAncestorContainer.parentNode.nodeName);
document.execCommand('RemoveFormat');
range = getRangeAt();
console.log(range.commonAncestorContainer.parentNode.nodeName);
}
}
function getRangeAt(win) {
var _selection, //选取对象
_range //光标对象
;
win = win || window; //获取创建光标的域
//html5得到光标的处理
if (win.getSelection) {
_selection = win.getSelection(); //获取选取对象
//当获取选取中有光标的处理
if (_selection.rangeCount) {
_range = _selection.getRangeAt(0); //返回选区的处理
}
}
//ie系列的处理,ie系列不支持win.getSelection,有自己独特的属性
else {
_selection = win.document.selection; //获取选取对象
_range = _selection.createRange(); //光标对象
}
return _range; //光标的处理
}
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<div contenteditable="true">
<span style="font-weight:bold">Selected part</span>
</div>
<button id="btn">split</button>
</body>
</html>
推荐阅读
- reactjs - 显示来自给定数据对象的图像
- ajax - 来自 ajax 的 Laravel 表单验证返回错误
- python - 我正在尝试编写一个代码来随机选择一个随机选择了 3 次的女孩名字
- android - android-如何在叠加层中启动另一个应用程序
- ios - 如何确定用户是否从 iOS 应用程序中获得了任何 Apple Watch?
- javascript - 带有扩展运算符的未定义结果
- reactjs - 如何通过外部包将页面添加到 Next.js 应用程序?
- arrays - 为什么在声明中分配字符串而不是稍后?
- pyspark - 广播()和提示(“广播”)之间的pyspark区别
- google-sheets - 在谷歌表格中将秒转换为年日小时分钟格式