質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Express

ExpressはNode.jsのWebアプリケーションフレームワークです。 マルチページを構築するための機能セットおよびハイブリッドのWebアプリケーションを提供します。

Q&A

解決済

1回答

231閲覧

Node.js Express JavaScript とある処理をするごとにサーバーから次の画像を表示させたい

_Victorique__

総合スコア1392

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Express

ExpressはNode.jsのWebアプリケーションフレームワークです。 マルチページを構築するための機能セットおよびハイブリッドのWebアプリケーションを提供します。

0グッド

0クリップ

投稿2018/03/02 03:40

編集2018/03/02 07:41

前提・実現したいこと

例えばですが、一枚画像が表示されているとします。
その画像を隣の枠にドラッグ&ドロップしたとします。
そうしたら、表示されていた画像を消し、次の画像をサーバーから読み込んで表示する、
というのを繰り返し行いたいと考えています。
この、次の画像を読み込んで表示させるところをどのように実装すべきか悩んでいます。

参考

https://www.youtube.com/watch?v=rfNm-Di6oaA
https://www.html5rocks.com/ja/tutorials/dnd/basics/

こちらはTinderですが、この場合だと5枚程度読み込んで終わりになっているのでちょっと違います。
一気に複数枚読み込むのではなく、1枚ずつ読み込みたいです。

画面遷移せずに読み込みたいのですがそれはできないのでしょうか?
できないのでしたらやはり複数枚読み込んでおいて、まだ読み込みたい時は、ボタンなどを配置して置くという方法
しかないのでしょうか?

追記

イメージ説明
この画像のようにdstを複数設置する場合を考えた時に同じidが複数存在してしまうのでうまく画像が切り替わりませんでした。
しかし、以下のようにするとうまくいきます。

HTML

1<div class="dragdrop"> 2<div id="dropArea1" droppable> 3 ここに画像をドロップしてください 4</div> 5<img id="dispImg" draggable src="http://robohash.org/1.png?size=200x200"></img> 6<div id="dropArea2" droppable> 7 ここに画像をドロップしてください 8</div> 9</div>

JavaScript

1let next = 1; 2dispImg.ondragstart = evt => { 3 evt.dataTransfer.setData('text', dragImg.src); 4} 5dropArea1.ondragover = evt => evt.preventDefault(); 6dropArea1.ondrop = evt => { 7 dstImg.src = evt.dataTransfer.getData('text'); 8 next++; 9 dispImg.src = `http://robohash.org/${next}.png?size=200x200`; 10}

dstが2個とかなら書いても良いとは思いますが、想定では9個とかになるのでコードがスマートではありません。
どうにかして綺麗に書くことはできないでしょうか?
ちなみにどのdstかによってdbの処理が変わってくるのでどのdstか分かって置く必要があります。
素直に書いた方が良いのでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

枠にdropイベントハンドラー(ondrop)を設定しておき、ドロップされたら画像を表示するほうの<img>(dispImg)のsrcを変更すればいいのでは?

js

1waku.ondrop = evt => { 2 dispImg.src = '次の画像のURL'; 3};

Expressのほうは、一番簡単なのは、静的ファイルを用意しておけばいいでしょう。

js

1// Express 2app.use('/static', express.static('img'));

サンプル

投稿2018/03/02 04:10

編集2018/03/02 05:29
turbgraphics200

総合スコア4267

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

_Victorique__

2018/03/02 05:07

回答ありがとうございます! ondropで次の画像を表示させると移動した場所に表示されてしまいませんか? やりたいことを詳しく言いますと、画像をドラッグ&ドロップしたら、移動した場所の画像は消す(非表示?)にして移動元に新しく画像を表示させたいです。可能ですか?
turbgraphics200

2018/03/02 05:12

移動した場所というが理解できないですけど、ページ遷移ということですか?
turbgraphics200

2018/03/02 05:29

サンプル組んでリンクを回答に追加しました。
_Victorique__

2018/03/02 06:29

サンプルまで示していただいてありがとうございます! まさしくこれです! 参考にさせていただきます!
_Victorique__

2018/03/02 07:42

すみません、追記しましたのでそちらにも回答していただけるとありがたいです!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問