私はJavaScriptにかなり慣れていないので、どんな助けでも素晴らしいでしょう!
この小さなコードブロックを作成して、divを取得してドラッグします。「dragme」IDをdivに割り当てますが、すべて問題なくダンディです。問題は、そのdivをhtmlから置き換えて、代わりにimg要素を配置すると(明らかに「dragme」IDをimgに割り当てる)、期待どおりに機能しないことです。
クリックしてimgをドラッグすると、実際には約3または4ピクセル移動し、マウスボタンを離すまでフリーズします(マウスアップ)。
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;
}
}
}