javascript拖曳互换div的位置实现示例

 更新时间:2021年06月28日 11:54:55   作者:眼眸中的温柔  
一个div拖动互换位置的demo,还有很大优化的空间,利用dom元素的dragstart/ondragover/ondrop事件完成,感兴趣的可以了解一下

1 实现原理

利用dom元素的dragstart/ondragover/ondrop事件完成,在拖曳开始的时候获取到拖曳元素,然后允许拖动,最后鼠标抬起后放到新的位置;这里用到了event.preventDefault()方法,很多人可能比较疑惑,这里简单介绍一下

event.preventDefault() :该方法是让浏览器不要执行与事件关联的默认动作

我们在dragover事件中使用,因为dragover关联的默认动作是阻止将数据或者元素放置到其他元素中;所以需要通过event.preventDefault()禁止该默认事件,这样就可以允许拖动元素到新的位置了

<!-- div拖曳调换顺序 适用gis中切换图层顺序-->
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <title></title>
  <style type="text/css">
        body{
            display: flex;
            padding: 100px;
            flex-direction: column;
        }
        div{
            width: 100px;
            height: 100px;
            text-align: center;
        }
    </style>
 
</head>
<body>
   <div style="background-color: red;width:200px;height:200px;" draggable="true">红色</div>
    <div style="background-color: green;width:100px" draggable="true">绿色</div>
    <div style="background-color: blue;" draggable="true">蓝色</div>
</body>
<script type="text/javascript">
    let div =document.getElementsByTagName("div");
    let container=null;
    // 遍历给每一个div绑定 dragstart dragover以及drop事件
    for(let i=0;i<div.length;i++){
        div[i].ondragstart=function(){  
            container=this
        }
        div[i].ondragover=function(){
            event.preventDefault();
        }
        div[i].ondrop=function(){
            debugger;
            if(container!=null&&container!=this){
                // 具体思路跟变量值互换一样
                let temp=document.createElement("div");
                document.body.replaceChild(temp,this);   //用新建的div占据目的位置
                document.body.replaceChild(this,container);// 目的div放置在起始位置
                document.body.replaceChild(container,temp)  // 起始div放置在目的位置
                debugger; 
                console.log('执行业务逻辑')
            }
        }
    }
</script>
</html>

到此这篇关于javascript拖曳互换div的位置实现示例的文章就介绍到这了,更多相关javascript拖曳互换div内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Javascript读取上传文件内容/类型/字节数

    Javascript读取上传文件内容/类型/字节数

    这篇文章主要为大家详细介绍了Javascript读取上传文件内容/类型/字节数,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-04-04
  • JavaScript截取、切割字符串的技巧

    JavaScript截取、切割字符串的技巧

    这篇文章主要介绍了JavaScript截取、切割字符串的技巧,文中给大家提到了substr 和 substring方法的区别,结合示例代码给大家介绍的非常详细,需要的朋友可以参考下
    2016-01-01
  • javascript 页面跳转方法集合

    javascript 页面跳转方法集合

    js 中实现页面跳转的方法(window.location和window.open的区别)
    2009-03-03
  • 浅谈JavaScript的闭包函数

    浅谈JavaScript的闭包函数

    闭包是有权访问另一个函数作用域中的变量的函数。首先要明白的就是,闭包是函数。由于要求它可以访问另一个函数的作用于中的变量,所以我们往往是在一个函数的内部创建另一个函数,而“另一个函数”就是闭包。本文对其进行系统分析,需要的朋友可以看下
    2016-12-12
  • JavaScript数组方法之findIndex()的用法详解

    JavaScript数组方法之findIndex()的用法详解

    findIndex()方法是一个非常实用的数组方法,可以帮助我们快速查找符合某个条件的元素,本文给大家介绍JavaScript数组方法之findIndex()的用法,感谢的朋友跟随小编一起看看吧
    2023-10-10
  • mock.js模拟数据实现前后端分离

    mock.js模拟数据实现前后端分离

    这篇文章主要为大家详细介绍了mock.js模拟数据实现前后端分离,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-07-07
  • 一个很酷的拖动层的js类,兼容IE及Firefox

    一个很酷的拖动层的js类,兼容IE及Firefox

    自己优化修改了网上的一个JS拖动类,增加了拖动时显示半透明的特效。
    2009-06-06
  • js设置默认时间跨度过程详解

    js设置默认时间跨度过程详解

    这篇文章主要介绍了js设置默认时间跨度过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-07-07
  • echarts报错:Error in mounted hook的解决方法

    echarts报错:Error in mounted hook的解决方法

    最近又遇到了写echarts的时候常遇到的一个错误,这篇文章主要给大家介绍了关于echarts报错:Error in mounted hook: “TypeError: Cannot read properties of undefined (reading ‘init‘)“的解决方法,需要的朋友可以参考下
    2022-07-07
  • 常用的javascript function代码

    常用的javascript function代码

    一些javascript常见函数,方便当作学习参考
    2008-05-05

最新评论