【发布时间】:2015-12-20 16:07:23
【问题描述】:
大家好,这是我的第一个问题,所以我可能做错了。
我想要实现的是拥有多个 <aside> 元素,它们都具有相同的 ID 类,当然标签可以通过拖放特性移动到屏幕上的任何位置。我找到了一个 JSFiddle,它展示了我所基于的代码,它使用一个可以移动到任何地方的侧边元素,但在使用多个元素时将不起作用。控制运动的代码在这里:
function drag_start(event) {
var style = window.getComputedStyle(event.target, null);
event.dataTransfer.setData("text/plain",
(parseInt(style.getPropertyValue("left"),10) - event.clientX) + ',' +
(parseInt(style.getPropertyValue("top"),10) - event.clientY));
}
function drag_over(event) {
event.preventDefault();
return false;
}
function drop(event) {
var offset = event.dataTransfer.getData("text/plain").split(',');
var dm = document.getElementById('dragme');
dm.style.left = (event.clientX + parseInt(offset[0],10)) + 'px';
dm.style.top = (event.clientY + parseInt(offset[1],10)) + 'px';
event.preventDefault();
return false;
}
var dm = document.getElementById('dragme');
dm.addEventListener('dragstart',drag_start,false);
document.body.addEventListener('dragover',drag_over,false);
document.body.addEventListener('drop',drop,false);
我遇到的问题是放置系统,它要求元素具有单独的 ID。我还需要让所有旁边的元素都具有相同的 ID,并且我不想使用类。在过去的三天里,我一直在尝试、思考和搜索网络,但没有找到答案,因为所有链接都返回到相同的代码。我已经研究过点击最后一个元素的索引,但找不到获取具有相同 ID 的所有元素的方法。提前致谢 - bybb 更新:已经破坏了 dnd 系统需要帮助:
var dragindex = 0;
$(document).ready(function(){
$("aside").click(function(){
dragindex = $(this).index();
});
});
function drag_start(event) {
var style = window.getComputedStyle(event.target, null);
event.dataTransfer.setData("text/plain",
(parseInt(style.getPropertyValue("left"),10) - event.clientX) + ',' + (parseInt(style.getPropertyValue("top"),10) - event.clientY));
}
function drag_over(event) {
event.preventDefault();
return false;
}
function drop(event) {
var offset = event.dataTransfer.getData("text/plain").split(',');
var dm = document.getElementById('#winborder');
dm.style.left = (event.clientX + parseInt(offset[0],10)) + 'px';
dm.style.top = (event.clientY + parseInt(offset[1],10)) + 'px';
event.preventDefault();
return false;
}
function makewindow(content, storevar) {
storevar = document.createElement('aside');
storevar.setAttribute("dragable", "true");
storevar.setAttribute("id", "winborder");
var content = document.createElement('div');
content.setAttribute("id", "wincontent");
storevar.appendChild(content);
document.body.appendChild(storevar);
storevar.addEventListener('dragstart',drag_start,false);
document.body.addEventListener('dragover',drag_over,false);
document.body.addEventListener('drop',drop,false);
}
尝试过在 getelementbyid 上使用和不使用 '#'
【问题讨论】:
-
为什么所有的 html 元素都必须有相同的 id?
-
必须同时移动所有元素是指同时移动吗?还是能够移动每个?
-
我需要能够单独移动每个元素。而我需要它们具有相同 id 的原因是因为我通过 javascript 添加了 side 元素。
标签: javascript html css drag-and-drop