js将元素拖拽放到另一个元素里

study_webing 2017-07-04 04:01:13
这种功能如何实现呢 也就是a元素拖到b元素里b元素就成了a元素的父元素
...全文
1154 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
study_webing 2017-07-04
  • 打赏
  • 举报
回复
引用 1 楼 zzgzzg00 的回复:
drag事件

<!DOCTYPE html>
<html>
<head>
    <title></title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0,user-scalable=no" />
    <meta name="format-detection"content="telephone=no"/>
    <style>
        #div{
            width: 100px;
            height: 100px;
            border-radius: 50%;
            background-color: #ff0000;
            margin: 40px auto 0 auto;
            line-height: 100px;
            text-align: center;
            color: #fff0df;
        }
        #container{
            display: flex;
        }
        #container>div{
            height: 200px;
            width: 200px;
            flex:1;
            border: 1px solid #000000;
            padding-top: 20px;
            text-align: center;
        }
    </style>
</head>
<body>
<div id="container">
    <div>yellow</div>
    <div>green</div>
    <div>blue</div>
    <div>black</div>
</div>
<div draggable="true" id="div"></div>
<script>
    const [div,conatiner]=[
        document.getElementById('div'),
        document.getElementById('container')
    ];
    div.ondragstart=function(e){
        div.innerHTML='dragstart';
        conatiner.style.backgroundColor='rgba(255,0,0,.1)';
        e.dataTransfer.setData('id','div');
    }
    div.ondrag=function(e){
        div.innerHTML='dragging';
    }
    div.ondragend=function(e){
        div.innerHTML='dragend';
        conatiner.style.backgroundColor='rgba(255,0,0,0)';
    }
    conatiner.ondragenter=function(e){
        e.preventDefault();
        e.target.style.backgroundColor='rgba(255,0,0,.3)';
        //drop之前没有获取不到data对象
        div.style.backgroundColor= e.target.innerHTML;
    }
    conatiner.ondragleave=function(e){
        e.preventDefault();
        e.target.style.backgroundColor='rgba(255,0,0,0)';
    }
    //目标对象容许被拖拽元素拖拽进来 默认不容许
    conatiner.ondragover=function(e){
        e.preventDefault();
    }
    //目标对象接受被拖拽元素放下
    conatiner.ondrop=function(e){
        const target=e.target;
        const id=e.dataTransfer.getData('id');
        const div=document.getElementById(id);
        div.style.backgroundColor=target.innerHTML;
        target.appendChild(div);
    }
</script>
</body>
</html>
类似这样试试
谢谢了~
似梦飞花 2017-07-04
  • 打赏
  • 举报
回复
drag事件

<!DOCTYPE html>
<html>
<head>
    <title></title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0,user-scalable=no" />
    <meta name="format-detection"content="telephone=no"/>
    <style>
        #div{
            width: 100px;
            height: 100px;
            border-radius: 50%;
            background-color: #ff0000;
            margin: 40px auto 0 auto;
            line-height: 100px;
            text-align: center;
            color: #fff0df;
        }
        #container{
            display: flex;
        }
        #container>div{
            height: 200px;
            width: 200px;
            flex:1;
            border: 1px solid #000000;
            padding-top: 20px;
            text-align: center;
        }
    </style>
</head>
<body>
<div id="container">
    <div>yellow</div>
    <div>green</div>
    <div>blue</div>
    <div>black</div>
</div>
<div draggable="true" id="div"></div>
<script>
    const [div,conatiner]=[
        document.getElementById('div'),
        document.getElementById('container')
    ];
    div.ondragstart=function(e){
        div.innerHTML='dragstart';
        conatiner.style.backgroundColor='rgba(255,0,0,.1)';
        e.dataTransfer.setData('id','div');
    }
    div.ondrag=function(e){
        div.innerHTML='dragging';
    }
    div.ondragend=function(e){
        div.innerHTML='dragend';
        conatiner.style.backgroundColor='rgba(255,0,0,0)';
    }
    conatiner.ondragenter=function(e){
        e.preventDefault();
        e.target.style.backgroundColor='rgba(255,0,0,.3)';
        //drop之前没有获取不到data对象
        div.style.backgroundColor= e.target.innerHTML;
    }
    conatiner.ondragleave=function(e){
        e.preventDefault();
        e.target.style.backgroundColor='rgba(255,0,0,0)';
    }
    //目标对象容许被拖拽元素拖拽进来 默认不容许
    conatiner.ondragover=function(e){
        e.preventDefault();
    }
    //目标对象接受被拖拽元素放下
    conatiner.ondrop=function(e){
        const target=e.target;
        const id=e.dataTransfer.getData('id');
        const div=document.getElementById(id);
        div.style.backgroundColor=target.innerHTML;
        target.appendChild(div);
    }
</script>
</body>
</html>
类似这样试试

87,907

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧