JS单击/双击编辑功能
HTML
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<link rel="stylesheet" type="text/css" href="/static/css/bootstrap.min.css"/>
<script src="/static/js/jquery-1.12.4.min.js"></script>
<script src="/static/js/bootstrap.min.js"></script>
<title>Title</title>
</head>
<body>
<span ondblclick="doubleClickChange(this)">双击修改</span>
<span></span>
</body>
</html>
JS
// 双击可编辑功能
function doubleClickChange(element) {
// 获取原值 同时去除空格回车
let old_val = element.innerHTML.trim().replace(/\s/g,"");
// 创建新的input元素 此处也可以是textarea
let new_val = document.createElement('input');
// 为新增元素添加类型
new_val.type = 'text';
new_val.style = 'width:120px';
// 为新增元素添加value值
new_val.value = old_val;
// 为新增元素添加光标离开事件
new_val.onblur = function() {
// 当触发时判断新增元素值是否为空,为空则不修改,并返回原有值
this.value = this.value.trim().replace(/\s/g,"");
// 相等 说明没改
if (this.value === old_val) {
element.innerHTML = old_val;
// 当触发时设置父节点的双击事件为ShowElement
element.setAttribute("ondblclick", "ShowElement(this);");
}
// 不等 说明改了
else {
element.innerHTML = this.value;
// 当触发时设置父节点的双击事件为ShowElement
element.setAttribute("ondblclick", "ShowElement(this);");
// 保存到数据库
xxfunction();
}
}
// 设置该标签的子节点为空
element.innerHTML = '';
// 添加该标签的子节点,input对象
element.appendChild(new_val);
// 设置获得光标
new_val.focus();
//设置父节点的双击事件为空
new_val.parentNode.setAttribute("ondblclick", "");
}
单击修改将行间事件ondblclick替换成onclick即可。