• H5元素拖拽使用事件数据传输


    H5中元素拖拽可以用元素拖拽事件实现,用event可以缩短代码长度。

    先看一般的拖拽方法

    实现效果:将图片1235拖到图片4中将拖入图片删除

    <img id="img1" src="img/01.png" />
    <img id="img2" src="img/02.png" />
    <img id="img3" src="img/03.png" />
    <img id="img5" src="img/05.png" />
    <img src="img/04.png" id="cancel" />

    定义五张图片 

    img{
    150px;
    height: 150px;
    border: 1px solid red;
    margin: 10px 50px;
    }

    给上样式

    开始写js部分

    var cancel = document.getElementById("cancel");        //获取 垃圾桶 (将元素拖入此图片时删除) 
    document.ondragstart = function(){                            //元素开始拖拽时触发事件
    event.dataTransfer.setData("text",event.target.id);    //获取当前元素的id 用text的数据类型存储
    console.log(event.target.id)                                  //可以在控制台打印出来看看
    }
    document.ondragover = function(){                          //在ondrageover事件中阻止浏览器对元素的默认行为
    event.preventDefault();
    }
    cancel.ondrop = function(){                                      //鼠标在元素目标上松开鼠标时触发的事件
    var objId = event.dataTransfer.getData("text");         //定义变量objId 用来接收 前面获取的id值
    console.log(document.getElementById(objId));       //控制台打印检查
    console.log(event.target);
    event.target.parentNode.removeChild(document.getElementById(objId));               //通过父元素删除前面被拖拽的元素  通过前面获取的id名直接获取元素
    }

    整个拖拽到垃圾桶删除图片就完成了。

    还有不使用 事件数据传输 event.dataTransfer.setData  

    定义一个变量接收在ondragstart 中当前拖拽的对象

    可以不用给每个图片定义id名。代码如下:

    var obj;
    var cancel = document.getElementById("cancel");
    document.ondragstart = function(event){
      obj = event.target;
    }
    document.ondragover = function(event){
    event.preventDefault();
    }
    cancel.ondrop = function(){
      obj.parentNode.removeChild(obj);
    }

  • 相关阅读:
    Mybatis Plus 代码生成器
    Vue中 scss不支持/deep/写法问题
    学习过程中看到的网站收藏
    mysql数据库的安装配置
    element表格样式修改
    vue甘特图gantt
    一个CSS动画生成工具,可自由配置各种动画特效,并自动生成代码
    《TypeScript 入门教程》全面介绍了 TypeScript 强大的类型系统,完整而简洁,示例丰富,比官方文档更易读,非常适合作为初学者学习 TypeScript 的第一本书 —— 阮一峰
    程序员文档编辑器 Markdown
    Svn(小乌龟)的基本操作使用
  • 原文地址:https://www.cnblogs.com/ddjps/p/10114216.html
Copyright © 2020-2023  润新知