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

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

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

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

JavaScript

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

Q&A

解決済

3回答

1355閲覧

JavaScript 変数event,idについて

taka_oct092018

総合スコア136

HTML5

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

JavaScript

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

0グッド

0クリップ

投稿2020/03/25 07:20

  1. 変数eventはEventオブジェクトのことでしょうか?
  2. eventは何かのプロパティでしょうか?
  3. eventはイベントが起こると自動的に発生するのでしょうか?
  4. 専門書によってはeventを「ev」または「e」と記述している場合があります。 

  ですが、サンプルコードのeventをevに変えてみた所、意図した通りには作動してくれませんでした。
なぜでしょか?
5. 変数idはHTML要素の属性を表しているのでしょうか?
「id = event.dataTransfer.getData("text");」は
「let id = event.dataTransfer.getData("text");」のように変数宣言すべきだと思っていましたが、
私の考えは完全に見当違いだったのでしょうか?

<!-- HTML5プロフェッショナル認定試験レベル2対策テキスト サンプルコード --> <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>ドラッグ&ドロップのサンプル</title> <script> function dragHandler(event) { //動作結果表示用のオブジェクトを取得 let pElm = document.getElementById("disp"); //ドラッグするデータの識別子をDataTransferオブジェクトにセット event.dataTransfer.setData("text", "COIN"); //動作結果を表示 pElm .innerHTML = "dragged !"; } function dropHandler(event) { //動作結果表示用のオブジェクトを取得 let pElm = document.getElementById("disp"); //ドロップされたデータの識別子("COIN")を取得 id = event.dataTransfer.getData("text"); //動作結果表示 pElm.innerHTML = id + " dropped !"; //イベントをキャンセル event.preventDefault(); } </script> </head> <body> <!-- ドラッグ元のフォームにドラッグに対する処理を定義 --> <div id="from" draggable="true" ondragstart="dragHandler(event);"> <p>【COIN】</p> </div> <p> <!-- ドラッグ先のフォームにドラッグに対する処理を定義 --> <div id="to" ondragover="event.preventDefault();" ondrop="dropHandler(event);"> <p>■BOX■</p> </div> <p id="disp">status</p> </body> </html>

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

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

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

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

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

guest

回答3

0

html要素に直書きするならeventは決め打ちです
引数として受ける側はevでもeでも好きにすればいいでしょう

投稿2020/03/25 07:29

yambejp

総合スコア116724

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

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

taka_oct092018

2020/04/01 09:45

yambejp様、回答ありがとうございます。 外部のjavascriptファイルから読み込む場合と、直接htmlファイルに記述するのでは 意味合いが異なることを理解できました。
guest

0

ベストアンサー

eventは何かのプロパティでしょうか?

上のコードでも、場所によりますfunction dragHandler(event)などのeventは単なる仮引数ですが、ondragstart="dragHandler(event);"などに書かれているeventwindow.eventです。

ですが、サンプルコードのeventをevに変えてみた所、意図した通りには作動してくれませんでした。

window.eventを参照している箇所では、eventという名前でプロパティを参照していますので、他の名前にはできません。

「let id = event.dataTransfer.getData("text");」のように変数宣言すべきだと思っていましたが、

そのとおりです。

投稿2020/03/25 07:27

maisumakun

総合スコア146018

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

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

taka_oct092018

2020/04/01 09:44

maisumakun様、回答ありがとうございます。 「ondragstart="dragHandler(event);"などに書かれているeventはwindow.eventです。」 Windowオブジェクトのプロパティと関数の引数について理解不足でした。 maisumakun様のご指導により、今の自分が不足している基礎知識を習得するため 専門書を読み返しています。
guest

0

  1. eventはイベントが起こると自動的に発生するのでしょうか?

概ね合っています。
イベントの発生条件を満たしたときにリスナ関数を実行します。


EventTarget がDOMに定められる各要素の根底にあるオブジェクトです。

イベント種別に相当する発生条件に応じて 内部的にdispatchEvent() が実行される仕組みで、on~ 属性や addEventListener()でイベントリスナが指定されていると、dispatchEvent()がイベントリスナの引数に Event(またはその派生オブジェクト)を渡して実行します。

ご質問のドラッグ&ドロップでは 「DragEvent < MouseEvent < Event」が渡されます。

投稿2020/03/25 08:13

AkitoshiManabe

総合スコア5434

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

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

taka_oct092018

2020/04/01 09:45

AkitoshiManabe様、回答ありがとうございます。 丁寧な解説、ありがとうございます。 Eventがどのように発生して送られてくる仕組みがよく分かりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問