

画像をドラッグ&ドロップで移動したいのですが、
DIV内でテキスト文だと移動できるのですが、画像だけだと移動できません(テキスト文と画像を入れるとテキスト文と一緒に画像が移動しますが、テキスト文なしの画像だけで移動させたいです。)
何故、画像だけでドラッグ&ドロップで移動させることができないのでしょうか?画像だけで移動させるにはどうしたらいいでしょうか?
宜しくお願いいたします。
IE7です。
<HTML>
<HEAD><TITLE>画像をドラッグ&ドロップで移動したい</TITLE>
</HEAD>
<SCRIPT language="JavaScript">
var target;
var isDrag=0;
function document_onmousedown(){
isDrag=1;
target=event.srcElement;}
function document_onmousemove(){
if( isDrag ){
target.style.top=event.clientY;
target.style.left=event.clientX;}
}
function document_onmouseup(){
isDrag=0;
//alert(text1.style.top);
//alert(event.srcElement);
}
</SCRIPT>
<BODY onmousemove="document_onmousemove()" onmousedown=
"document_onmousedown()" onmouseup="document_onmouseup()">
<DIV style="position:absolute;font-size:24px;cursor:hand; ">
<img src="画像.gif">
</DIV>
<BR>
<BR></BODY></html>
No.1ベストアンサー
- 回答日時:
<DIV style="略">文字列</DIV>
とした場合、「文字列」をクリックした際に起こる、
マウスイベントで取得されるエレメントの対象はDIVです
<DIV style="略"><img src="画像.gif"></DIV>
とした場合、「画像.gif」をクリックした際に起こる、
マウスイベントで取得されるエレメントの対象はimgです
img自体にはposition:absoluteによる絶対配置は設定されていないので、
target.style.top等による位置指定は適用できず失敗するのだと思います
画像単独ならば、divを使わずimgタグ自体にposition等のstyle設定を適用させることで解決できます
div内にimgと文字列が混在し、両者を1つとして扱いたい場合は、
マウスダウン用のfunctionを
function document_onmousedown(){
isDrag=1;
target=event.srcElement;
while(target.style.position != "absolute" && target.tagName != "BODY"){
target = target.parentNode;
}
}
のようにして、positionがabsoluteか確認しつつ、
そうでなければtargetを上階層にしていくようにすれば大丈夫かと思います
// tagNameの判別部はwhileによる上階層探索を最悪BODYで止め永久ループを防ぐためです
ちなみにこれはIE6で試したものなので7用に変更が必要になるかもしれませんが、
考え方としては一緒になると思うので参考までに。
後はマウス動作が全てBODYにかかっているので、
BODY自体をクリックした時はどうするの?
ということも考慮していくのが望ましいと思いますよ
早速お答え頂きありがとうございます。
imgタグ内にstyle設定したらうまく画像のみでドラッグ&ドロップで移動できました。IE7でも特に問題なく動作しました。
また、なぜ画像が移動しないかわかりやすく教えて頂きありがとうございます。
>BODY自体をクリックした時はどうするの?
>ということも考慮していくのが望ましいと思いますよ
これは、DIV内の文字や画像やimgの画像以外の場所をクリックした場合ということでしょうか?特に問題は発生しませんでした。
丁寧に回答頂きありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
オンマウスで、画像切り替え+...
-
HTMLで条件分岐はできますか?
-
MAX関数を使ってからLEFT JOIN...
-
NNでロールオーバーしたgifアニ...
-
iframe内のリンクが飛ばないの...
-
jqueryのsortableで一部ソート...
-
JavaScriptで変更した属性の元...
-
画像と文字を同時に切り替えたい
-
ローカルでは問題なく動くがサ...
-
プログラミングでのビンゴマシ...
-
JSPでの画像ファイル表示
-
【HP作成】クリックすると下...
-
javascriptのアラートを画面の...
-
自働生成される<div>タグに連番...
-
ダブルクォーテーションが消え...
-
テキストエリア内の一部の文字...
-
jspでcssが読み込めない
-
画像をクリックすると別ウイン...
-
Slick.jsのオプションrtlについて
-
nodejsの画像表示は特別なこと...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
画像削除機能を付けたい
-
1枚の画像をクリックすると複数...
-
JavaScript スライドの画像にリ...
-
透過pngの透明部分以外をクリッ...
-
1枚の画像をクリックして複数の...
-
textareaに画像を表示したい
-
WEBページ立ち上げ時に1回のみ...
-
画像をフォルダに入れれば表示...
-
Gifアニメ、最後のコマに行った...
-
Javascriptで指定した日付と時...
-
onmouseで画像の切り替えについて
-
JavaScriptとチェックボックス...
-
画像をクリックしてその地点の...
-
iframe内のリンク文字のマウス...
-
innerHTMLで、表示すると、一部...
-
オンマウスで、画像切り替え+...
-
スライドショーにコメントを入...
-
ボタンをクリックした時に、キ...
-
プルダウンの位置がwin/macでず...
-
jQuery bxSlider 画像に変更
おすすめ情報