• 締切済み

javascriptでマウスイベントを拾うとき

javascriptでマウスイベントを拾うときに、 onLoad関数の中で、 document.onmousedown = mydown; として、 function mydown(e) { として、よくマウスイベントのeを 使いますが、このmydown関数へ引数を増やしてわたしたいのですが、 どうやればいいのですか?普通にカッコのなかにわたすようにしても ダメでした。マウスイベントのeがあるためのように思います。 教えてください。

みんなの回答

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

それは質問の仕方がわるい・・・ document.onmousedownについて聞いているかと思いました。 documentのイベントハンドラなんで、スタティックかなと。 div毎に設定したいなら前回の回答にもしたとおり、無名関数の引数を 指定してやればよいでしょう。 こんな感じ? <script> window.onload=function(){ document.getElementById("hoge1").onmousedown = function(){mydown(this,"aaa")}; document.getElementById("hoge2").onmousedown = function(){mydown(this,"bbb")}; document.getElementById("hoge3").onmousedown = function(){mydown(this,"ccc")}; } function mydown(obj,str) { alert(obj.id+"の引数は"+str); } </script> <style> .hoge{ width:100px; height:100px; border:1px solid #000000; } </style> <div class="hoge" id="hoge1"></div> <div class="hoge" id="hoge2"></div> <div class="hoge" id="hoge3"></div> ようは、前回もききましたが「何を渡したいか?」です。 例にもあるとおり無名関数で自分自身を渡すときはthisが使えます。

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

なにを渡したいのですか? 仮に以下のように無名関数で引数を指定したとしても <script> window.onload=function(){ document.onmousedown = function(){mydown("hoge")}; } function mydown(obj) { alert(obj); } </script> のように、単にスタティックな情報をわたしているだけですから <script> window.onload=function(){ document.onmousedown =mydown; } function mydown() { var obj="hoge"; alert(obj); } </script> で十分な気がしますが?

suucha
質問者

補足

さっそくありがとうございます。 ということは、document.onmousedown に渡す関数は、 引数をマウスイベント以外はもてないということですか? やりたかったのは、 onLoad内でdocumentの中のあるdivをまわして、 それぞれのdocument.onmousedown イベントに文字列の 引数を渡したかったのです。 各divごとに渡す内容が違います。

関連するQ&A

  • マウスホイールボタンのイベントをとるには?

    キーが押された時のイベントは、document.onkeydownを、そして、 マウスボタンが押された時は、document.onmousedownイベントで イベントを拾うことができることは知っております。 ところで、マウスホイールの上下スクロールのイベントを拾うには どのようなJavaScript(IE/NN)でコーディングすればよろしいでしょうか?

  • イベントの関数について、よくわからないことがあります。

    イベントの関数について、よくわからないことがあります。 (1)引数をセットしない関数と window.document.onmousemove = f; function f(evt) { alert(evt); } (2)無名関数?に引数 window.document.onmousemove = function(e) { alert(e); } (1)(2)は同じ動作なのですが、window.document.onmousemoveにセットする関数の引数は 特殊なのでしょうか?

  • javascriptのマウスイベントに関して質問です。

    javascriptのマウスイベントに関して質問です。 マウスが画像の上に乗ったら画像を切り替え、画像から離したら元の画像に戻すような プログラムを作りたいのですが、うまくいきません。 マウスをもっていっても画像が切り替わりません。 プログラムは以下のように作りました。 どこが間違っているのかまったくわかりません。 よろしくお願いします。 <html> <head> <title>画像切り替え</title> <script type="text/javascript"> <!-- function changeillustsikaku() { document.gazoukirikae.src="./sikaku.gif"; } function changeillustmaru() { document.gazoukirikae.src="./maru.gif; } //--> </script> </head> <body> <h2>画像切り替え</h2> <div> <img src="./sikaku.gif" name="gazoukirikae" alt="四角" onMouseOver="changeillustmaru()" onMouseOut="changeillustsikaku()"> </div> </body> </html>

  • JavaScript Eventのタイミング

    Eventの挙動を学ぶために、簡単なスクリプトを作成しました。 テキストボックスに文字列を入れて、Submitボタンを押すと、 テキストボックスの下に(innerHTMLで)入力文字が表示され、 ボタン自体も入力文字になるというものです。 しかし、テキストに文字を入力し、Submitを押してもボタン・innerHTMLともに文字は変化しません。このままリロードをすると変化します。 挙動からして、マウスクリック自体は反応していないが、リロードによりイベントハンドラが動作しているように見受けられます。 イベントハンドラはonclickに代入しているためなぜこのようになるのか わかりません。 できるだけ、JavascriptとHTMLを分離したく外だしのファイルで 実現したいと思っています。 考え方、(比較的平易な)参考資料などありましたら教えていただけないでしょうか? HTMLで<body onload="init()">として、JavaScriptでは以下のように記述しています。 function init(){ document.getElementById("button").click = change(); } function change(){ keyword = document.getElementById("keyword").value; document.getElementById("input").innerHTML = keyword; document.getElementById("button").value = keyword; }

  • NN系でマウス座標取得

    お世話になります。 javascriptにてマウス座標を取得するファンクションを作成したいと 考えております。 そこで以下のソースでも取得可能だと思うのですが NN系でイベントが走らない場合でもマウス座標を 取得するファンクションを作成したいです。 すごく簡単なのかもしれませんが、ご教授宜しくお願い致します。 function getMouseY(e){  if(document.all) return document.body.scrollTop+event.clientY else if(document.layers||document.getElementById) return e.pageY }

  • javascriptの解説

    http://shanabrian.com/web/jquery/circle-animation.php こちらのサイトのjavascriptのコード20,21行目がよくわからないのでどなた解説していただけないでしょうか。 step : function(now) { angle = now * 180; } function()のかっこのなかでnowがあるのでこれは引数なようにみえるのですが、関数じゃないので引数でもありません。 この「now」の意味することと役割が全然わかりません。 どなたかよろしくお願いします。

  • 動的にイベントハンドラ生成する際に引数がある関数を作る

    お世話になっています、ご質問があります。 以下の場合 --hogeA.html-- <html> <head> <script type="text/javascript" src="./**/hogeB.js"></script> </head> <body onload="javascript:hoge.init()"> <input type="text" name="hogehoge" value=""> </dody> </html> --hogeB.js-- hoge = { init : function(){ var BodyElement = document.getElementsByTagName('INPUT'); BodyElement.onBlur = this.setOnBlurAction; }, setOnBlurAction : function(value){ ****(省略)**** } } 上記の場合に、onBlurイベントハンドラ関数を生成し、 画面上でonBlurイベント時にsetOnBlurActionを実行させる予定です。 引数のある関数の場合、動的にイベントハンドラ関数を生成する際はBodyElement.onBlur = this.setOnBlurAction; では駄目な気が致しますが、どうすれば良いでしょうか。 どなたかご教授願います。

  • なにもイベントがないところでJavaScriptを動かしたい

    初心者の為、ご教授願います。 Pl./SQLで開発を行っております。 その中で、OnLoad時にJavaScriptを起動させているのですが、 そのプログラムの中で別にJavaScriptを起動させたいのです。 何をやりたいかと言うと、チェックをかけてエラーだったら、 JavaScriptのようなダイアログを出力したいのです。 イベントは発生しないので、どのようにメッセージを出せば良いのか 分かりません。Web上では表示したくないのです。 どうか、お力添えを宜しくお願い致します。

  • イベントハンドラに処理を追加するには?

    例えばbodyタグのonloadイベントハンドラに JavaScriptを使って処理を追加するにはどうすればよいのでしょうか? 例) ・rei.htm <html>  <script language="JavaScript" type="text/javascript">  function hoge(){   alert("hogeです");  }  function foo(){   alert("fooです");  }  </script>  <body onload="hoge();">  </body>  <script language="JavaScript" type="text/javascript">  document.body.onload += foo();  </script> <html> ※前提条件として、変更可能な箇所はscriptタグ内のみとなります。 「こんなんでいけないかな?」と思って上記のようにやってみたのですがうまくいきませんでした。 (結果はfoo()のみ実行され、hoge()は実行されませんでした。 alertでbody.onloadの中身を確認すると『function anonymous{hoge();}undefined』と表示されるので、なぜfoo()が実行されてhoge()が実行されないのかよくわかりませんが‥) また試しに document.body.onload += foo(); これを以下のように変更してみました。 document.body.onload = foo(); この時は、 ・foo()の実行  ↓ ・javascriptエラー  ↓ ・hoge()の実行 となりました。(これもなぜこうなるのかよくわかりせん) 以上、イベントハンドラに最初から任意に入れられている処理を残しつつ、 さらに処理を加えるにはどうすればよいのかご教示お願いします。

  • 外でマウスアップした時のイベント

    以下htmlは[up]の上でマウスダウンすると[down]に、[down]の上でマウスアップすると[up]になります。 しかし、[up]の上でマウスダウンして、[down]に変わった後[down]の外でマウスアップすると[down]のままになってしまいます。 このように、外でマウスアップした場合でも[up]の表示としたいのですが、なにかよい方法はないでしょうか? FlashのAcitoscriptでいうところのreleaseOutsideを検知したいです。 <html> <head> <script> window.onload = function(){ var Drag = 0; i = function(id){ return document.getElementById(id) }; i('o').onmousedown = function(){i('o').innerHTML='[down]'; } i('o').onmouseup = function(){ i('o').innerHTML='[up]'; } } </script> <div id="o">[up]</div> </body> </html>

専門家に質問してみよう