teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

1

複数のdstを設置する場合

2018/03/02 07:41

投稿

_Victorique__
_Victorique__

スコア1392

title CHANGED
File without changes
body CHANGED
@@ -14,4 +14,38 @@
14
14
 
15
15
  画面遷移せずに読み込みたいのですがそれはできないのでしょうか?
16
16
  できないのでしたらやはり複数枚読み込んでおいて、まだ読み込みたい時は、ボタンなどを配置して置くという方法
17
- しかないのでしょうか?
17
+ しかないのでしょうか?
18
+
19
+
20
+
21
+ ### 追記
22
+ ![イメージ説明](dd2ba20e164cf17a4fa4cca7c674c808.png)
23
+ この画像のようにdstを複数設置する場合を考えた時に同じidが複数存在してしまうのでうまく画像が切り替わりませんでした。
24
+ しかし、以下のようにするとうまくいきます。
25
+ ```HTML
26
+ <div class="dragdrop">
27
+ <div id="dropArea1" droppable>
28
+ ここに画像をドロップしてください
29
+ </div>
30
+ <img id="dispImg" draggable src="http://robohash.org/1.png?size=200x200"></img>
31
+ <div id="dropArea2" droppable>
32
+ ここに画像をドロップしてください
33
+ </div>
34
+ </div>
35
+ ```
36
+ ```JavaScript
37
+ let next = 1;
38
+ dispImg.ondragstart = evt => {
39
+ evt.dataTransfer.setData('text', dragImg.src);
40
+ }
41
+ dropArea1.ondragover = evt => evt.preventDefault();
42
+ dropArea1.ondrop = evt => {
43
+ dstImg.src = evt.dataTransfer.getData('text');
44
+ next++;
45
+ dispImg.src = `http://robohash.org/${next}.png?size=200x200`;
46
+ }
47
+ ```
48
+ dstが2個とかなら書いても良いとは思いますが、想定では9個とかになるのでコードがスマートではありません。
49
+ どうにかして綺麗に書くことはできないでしょうか?
50
+ ちなみにどのdstかによってdbの処理が変わってくるのでどのdstか分かって置く必要があります。
51
+ 素直に書いた方が良いのでしょうか?