gpt4 book ai didi

javascript - JS 拖放与 DOM

转载 作者:行者123 更新时间:2023-11-28 07:59:33 25 4
gpt4 key购买 nike

this教程我制作了简单的拖放网络应用程序。但是我不能用 DOM 来做。这是我的代码 jsfinddle .它不适用于 jsfiddle,但如果你下载它,它就会。脚本应该放在 div 后面。当你取消注释 <div class="column" draggable="true"><span>A</span></div>它会工作(不在 jsfiddle 中)。那么我如何使用 DOM 实现呢?

最佳答案

假设您的意思是使用动态创建的元素进行可拖动,我已经更新了您的 jsfiddle。 http://jsfiddle.net/7c3v0s1s/6/在进行更改时,我将代码包装在命名空间中。

HTML

<div class="containter">
<div id="columns"></div>
</div>

Javascript

var localNameSpace = {
dragSrcEl: null
, bindDraggables: function() {
var cols = document.querySelectorAll('#columns .column');

[].forEach.call(cols, function(col) {
col.addEventListener('dragstart', localNameSpace.handleDragStart, false);
col.addEventListener('dragenter', localNameSpace.handleDragEnter, false);
col.addEventListener('dragover', localNameSpace.handleDragOver, false);
col.addEventListener('dragleave', localNameSpace.handleDragLeave, false);
col.addEventListener('drop', localNameSpace.handleDrop, false);
col.addEventListener('dragend', localNameSpace.handleDragEnd, false);
});
}
, createDraggables: function() {
var colDiv = document.getElementById('columns');
var divC = document.createElement('div');
var spanC = document.createElement('span');

divC.className = 'column';
divC.draggable = 'true';
spanC.innerHTML = 'A';

divC.appendChild(spanC);
colDiv.appendChild(divC);
}
, handleDrop: function(e) {
if(e.stopPropagation){
e.stopPropagation();
}

if(dragSrcEl != this){
localNameSpace.dragSrcEl.innerHTML = this.innerHTML;
this.innerHTML = e.dataTransfer.getData('text/html');
}
return false;
}
, handleDragEnd: function(e) {
var cols = document.querySelectorAll('#columns .column');
this.style.opacity = 1;

[].forEach.call(cols, function(col){
col.classList.remove('over');
});
}
, handleDragEnter: function(e) {
this.classList.add('over');
}
, handleDragLeave: function(e) {
this.classList.remove('over');
}
, handleDragOver: function(e) {
if(e.preventDefault){
e.preventDefault();
}

e.dataTransfer.dropEffect = 'move';
return false;
}
, handleDragStart: function(e) {
this.style.opacity = 0.4;
localNameSpace.dragSrcEl = this;
e.dataTransfer.effectAllowed = 'move';
e.dataTransfer.setData('text/html', this.innerHTML);
}
, init: function() {
var readyStateCheckInterval = setInterval(function() {
if (document.readyState === "complete") {
clearInterval(readyStateCheckInterval);
localNameSpace.createDraggables();
localNameSpace.bindDraggables();
}
}, 10);
}
};

localNameSpace.init();

关于javascript - JS 拖放与 DOM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29864246/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com