当前位置: 首页 > article >正文

EditInPlace就地编辑:Dom vs Form

利用Dom和Form实现就地编辑(EditInPlace)功能,两者在实现方式、用户体验和适用场景上有一些区别。下面我将详细解释这些区别:

1. EditInPlace

就地编辑(EditInPlace)是一种用户界面设计模式,允许用户直接在页面上修改内容,而无需跳转到单独的编辑页面或打开新的窗口。举个bilibili的栗子

在这里插入图片描述

2. Dom实现

优点:

  • 简洁性:直接操作DOM元素,代码相对简单,易于理解和维护。
  • 性能:不需要额外的表单元素,减少了页面上的元素数量,可能提高渲染性能。
  • 灵活性:可以更灵活地控制样式和行为,例如通过CSS和JavaScript来定制输入框的外观和交互。
  • 响应速度:用户点击后立即进入编辑模式,响应速度快。

缺点:

  • 复杂性:需要手动处理更多的事件和状态管理,如失去焦点时保存内容、键盘事件等。
  • 可访问性:对于屏幕阅读器和其他辅助技术的支持可能不如表单元素好。
  • 跨浏览器兼容性:不同浏览器对DOM操作的支持可能存在差异,需要进行额外的兼容性测试。

适用场景:

  • 简单的文本编辑。
  • 需要高度定制化的UI和交互。
  • 对性能有较高要求的情况。

代码实例:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>EditInPlace</title>
</head>
<body>
    <div id="app">
        <div id="ep1">
            <span id = 'content'>这个家伙很懒,什么都没有留下</span>
            <input type="text" id="input" value="这个家伙很懒,什么都没有留下">
            <input type="button" id="save" value="save">
            <input type="button" id='cancel' value="cancel">
        </div>
    </div>
    <script>
        // DOM js html 节点对象 动态操作html
        const content = document.getElementById('content')
        const input = document.getElementById('input')
        const save = document.getElementById('save')
        const cancel = document.getElementById('cancel')
        
        // 文本状态
        function convertToText() {
            input.style.display = 'none'
            save.style.display = 'none'
            cancel.style.display = 'none'
            content.style.display = 'inline'
        }

        // 编辑状态
        function convertToEdit() {
            input.style.display = 'inline'
            save.style.display = 'inline'
            cancel.style.display = 'inline'
            content.style.display = 'none'
        }
        convertToText();
        content.addEventListener('click',function(){
            convertToEdit()
            // 输入框里是最新的签名
            input.value = content.innerText
        }) 
        // 点击保存
        save.addEventListener('click',function(){
            content.innerText = input.value
            convertToText()
        })
        // 点击取消
        cancel.addEventListener('click',function(){
            convertToText()
        })
    </script>
</body>
</html>

3. Form实现

优点:

  • 内置功能:表单元素自带很多内置功能,如自动完成、验证、提交等。
  • 可访问性:表单元素通常具有更好的可访问性支持,更容易被屏幕阅读器识别。
  • 用户习惯:用户对表单元素的操作更为熟悉,使用体验更加自然。
  • 事件处理:表单元素提供了丰富的事件(如submitchange等),便于处理各种用户操作。

缺点:

  • 复杂性:需要处理表单提交、重置等逻辑,代码可能会稍微复杂一些。
  • 性能:表单元素可能比纯DOM元素占用更多资源,尤其是在大量数据的情况下。
  • 布局限制:表单元素的默认样式和行为可能需要额外的CSS和JavaScript来调整,以适应特定的设计需求。

适用场景:

  • 需要复杂的数据验证和提交逻辑。
  • 需要处理多种类型的输入(如文本、数字、日期等)。
  • 重视可访问性和用户习惯。

代码实例:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>EditInPlace</title>
</head>
<body>
    <form action="http://www.baidu.com" method="post">
        <div>
            <label for="input">个性签名</label>
            <input type="text" name = 'signature' id = 'input' placeholder="请输入签名">
            <input type="submit" value = 'save'>
            <input type="submit" value = 'cancel'>
        </div>
    </form>
</body>
</html>

4. 总结

  • DOM实现适合于简单的文本编辑,需要高度定制化和高性能的场景。
  • Form实现适合于复杂的表单操作,需要内置验证和提交逻辑,以及更好的可访问性的场景。

http://www.kler.cn/a/419404.html

相关文章:

  • vxe-table 树形表格序号的使用
  • 牛客面经学习【2024/12/1】
  • 项目代码第1讲:各个文件夹是什么意思?按照官方文档教程创建项目,各个文件夹的理解、框架自主生成的Controller(Restful风格)
  • Transformers在计算机视觉领域中的应用【第1篇:ViT——Transformer杀入CV界之开山之作】
  • windows docker 入门
  • Scala关于成绩的常规操作
  • 缓存与缓冲
  • 基于PHP的音乐网站的设计与实现
  • 每日速记10道java面试题03
  • 写一份客服网络安全意识培训PPT
  • 如何分段存储Redis键值对
  • 智慧银行反欺诈大数据管控平台方案(二)
  • windows C#-为类或结构定义值相等性(上)
  • 网络原理-初识
  • 解密开源大模型如何实现本地化部署并基于本地的知识库进行应用
  • Java基础面试题11:简述System.gc()和Runtime.gc()的作用?
  • 一些面试问题的深入与思考
  • 国际网络安全趋势
  • git push使用
  • 探索Linux的目录结构:深入理解文件系统的组织
  • mongodb配置ssl连接
  • 详解Qt PDF 之 QPdfDocument与 QPdfView 打开与显示pdf
  • 如何在 Debian 7 上设置 Apache 虚拟主机
  • 时频转换 | Matlab基于S变换S-transform一维数据转二维图像方法
  • node == RabbitMQ入门教程
  • 手机控制载货汽车一键启动无钥匙进入广泛应用