js点击使内容变成可编辑状态

本文介绍了一种使用原生JavaScript实现网页元素内容编辑的方法。通过点击编辑按钮,指定的文本将被替换为可编辑的文本域,允许用户直接修改内容,并在完成编辑后保存更改。

一个有内容的标签,用原生JS点击按钮使内容变成可编辑状态,然后使用保存数据。这个是点击编辑按钮使得标签内容替换为文本域来实现的。

代码如下


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <title>JS编辑内容</title>


</head>


<body>
    <div>
        <b>电脑:</b><span >小米笔记本电脑</span><button onclick="edit(this)">编辑</button>
    </div>
    <div>
        <b>手机:</b><span>华为手机</span><button onclick="edit(this)">编辑</button>
    </div>


<script>


        /*点击编辑即可要修改的内容*/
        function edit(element) {
            element.innerHTML="保存";
            var prev=element.previousSibling;
            var oldhtml=prev.innerHTML;
            prev.innerHTML="";
            var newObj=document.createElement("textarea");
            newObj.className="textArea";
            newObj.innerHTML=oldhtml;
            prev.appendChild(newObj);
            newObj.focus();
            newObj.onblur=function(){
                alert(prev.id);
                element.innerHTML="编辑";
                prev.innerHTML=this.value?this.value:oldhtml;
            }
        }
    


</script>


</body>
</html>

JavaScript中,实现表格单元格(td或th)的双击事件以使其变为可编辑状态通常涉及到以下几个步骤: 1. 首先,你需要获取到表格元素,并给每个单元格添加点击事件监听器。这可以通过`addEventListener('click', function)`来完成。 ```javascript const table = document.getElementById('your-table-id'); table.addEventListener('click', cellClickHandler); ``` 2. 创建`cellClickHandler`函数,检查是否进行了双击操作。你可以通过计算两次点击的时间间隔来判断。如果时间间隔小于一定阈值(比如400毫秒),则认为是双击。 ```javascript let isDblClick = false; function cellClickHandler(event) { if (isDblClick) { // 单元格已变为可编辑状态,处理编辑逻辑 editCell(event.target); } else { const timeSinceLastClick = new Date() - lastClickTime; // 假设lastClickTime保存了上一次点击的时间 if (timeSinceLastClick < 400) { isDblClick = true; lastClickTime = new Date(); } else { isDblClick = false; } } } ``` 3. 当单元格变为可编辑状态时,你可以添加相应的UI变化,如改变背景色、启用输入框等,并绑定编辑完成后恢复原状的逻辑。 4. 编辑完成后,记得清除`isDblClick`标志,以便于下一次双击时继续触发同样的过程。 ```javascript function editCell(cell) { cell.contentEditable = true; cell.classList.add('editable'); lastEditTime = new Date(); // 更新最近编辑时间 // 添加失去焦点事件处理,编辑结束后取消内容编辑 cell.addEventListener('blur', () => { cell.contentEditable = false; cell.classList.remove('editable'); }); } // 初始化上一次点击时间 lastClickTime = new Date(); ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值