JS - 拖放帮助
JS - Drag and Drop assistance
我有一个当前有效的html/js代码,允许我将4个对象移动到各自的DIV属性中,但是,一旦用户将所有图像放在各自的位置,我就完全困惑如何弹出警报。如果有人有更好的方法或可以指出我正确的方向,我将不胜感激。这是我下面的jsfiddle链接:
https://jsfiddle.net/crizil/z2zd6bfk/1/
<body>
<img id="puzzle1" src="images/puzzle1.jpg" draggable="true" ondragstart="dragEvent(event)"
width="500" height="100">
<img id="puzzle2" src="images/puzzle2.jpg" draggable="true" ondragstart="dragEvent(event)"
width="500" height="100">
<img id="puzzle3" src="images/puzzle3.jpg" draggable="true" ondragstart="dragEvent(event)"
width="500" height="100">
<img id="puzzle4" src="images/puzzle4.jpg" draggable="true" ondragstart="dragEvent(event)"
width="500" height="100">
<div id="div1" ondrop="dropPic(event)" ondragover="dropEvent(event)" data- drop="puzzle1">
</div>
<div id="div2" ondrop="dropPic(event)" ondragover="dropEvent(event)" data- drop="puzzle2">
</div>
<div id="div3" ondrop="dropPic(event)" ondragover="dropEvent(event)" data- drop="puzzle3">
</div>
<div id="div4" ondrop="dropPic(event)" ondragover="dropEvent(event)" data- drop="puzzle4">
</div>
</body>
//allow ability to drop objects
function dropEvent(ev) {
ev.preventDefault();
}
//allow image dragging
function dragEvent(ev) {
ev.dataTransfer.setData('text', ev.target.id);
}
//drop image event
function dropPic(ev) {
ev.preventDefault();
var data = ev.dataTransfer.getData('text');
//make it to only drop in certain DIV attribute
if (ev.target.getAttribute('data-drop') == data)
ev.target.appendChild(document.getElementById(data));
}
如果我需要进一步澄清我正在尝试做什么,请告诉我,我希望我能有更好的方式来传达我正在尝试做的事情。
您可以添加一个计数器并检查它是否等于document.querySelectorAll('[data-drop]').length
:
var counter = 0;
function dropPic(ev) {
ev.preventDefault();
var data = ev.dataTransfer.getData('text');
//make it to only drop in certain DIV attribute
if (ev.target.getAttribute('data-drop') == data) {
ev.target.appendChild(document.getElementById(data));
if (++counter == document.querySelectorAll('[data-drop]').length) {
alert('all done');
}
}
}
相关文章:
- EaseJS拖放;放下(动画CC)电影剪辑的鼠标坐标
- 为什么HTML5拖放的目标是孩子?(可排序列表)
- HTML/CSS-用于拖放的全页面覆盖
- Rubaxa可与聚合物进行排序/拖放不起作用,具体取决于显示器:
- dblclick事件是在jquery拖放后触发的
- 无法进行拖放以使用本地存储
- 如何使用Java脚本创建提交按钮's的拖放功能
- Chrome原生拖放相对容器并不能正确渲染重影
- 如何在Javascript中创建排序、拖放多级列表
- html5拖放文件-在提交整个表单时上传
- 在jQuery UI中获取ul和li值,拖放即可排序
- html5拖放确定拖动项目的来源
- 我使用什么语言来创建像Webly这样的拖放功能
- HTML5拖放;Drop-使用jQuery处理事件
- 使用jquery拖放图像
- HTML5拖放访问属性
- HTML5拖放-如何删除IE上的默认重影图像
- 需要编码帮助:向后拖放可恢复
- JS - 拖放帮助
- 在jQuery的帮助下进行拖放