我对JavaScript很新,所以任何帮助都会很棒!
我创建了这个小块代码,让我抓住div并拖动它。我将“dragme”id分配给div,一切都很好,花花公子。问题是如果我从我的html替换div并改为使用img元素(显然将“dragme”id分配给img),事情就不会按预期工作了。
当我点击拖动img时,它实际上会移动大约3或4个像素,然后它会冻结,直到我抬起鼠标按钮(mouseup)。
是否有某些属性或特性会阻止img元素以与div相同的方式起作用?
var isClicked = false;
var startClientX = 0;
var startClientY = 0;
var startLeft = 0;
var startTop = 0;
window.addEventListener("load", addListeners, true);
function addListeners()
{
document.getElementById("dragme").addEventListener("mousedown", mouseIsDown, false);
document.getElementById("dragme").addEventListener("mouseup", mouseIsUp, false);
window.addEventListener("mousemove", moveImage, false);
function mouseIsDown(e)
{
if (isClicked == false)
{
isClicked = true;
startClientX = e.clientX;
startClientY = e.clientY;
startLeft = document.getElementById("dragme").offsetLeft;
startTop = document.getElementById("dragme").offsetTop;
}
}
function mouseIsUp()
{
if (isClicked == true)
{
isClicked = false;
}
}
function moveImage(e)
{
if (isClicked == true)
{
imageLeftDif = e.clientX - startClientX;
imageTopDif = e.clientY - startClientY;
var newLeftPos = (startLeft + imageLeftDif) + "px";
var newTopPos = (startTop + imageTopDif) + "px";
document.getElementById("dragme").style.left = newLeftPos;
document.getElementById("dragme").style.top = newTopPos;
}
}
}
答案 0 :(得分:0)
这解决了问题(由 syazdani 作为评论提供的答案):
我冒昧地说内置的浏览器拖放图像 正在踢。请尝试e.preventDefault并在mousedown中返回false 处理程序。 - syazdani 12年2月2日17:26