• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:addEventListnerについて)

addEventListnerについて

このQ&Aのポイント
  • Javascriptを用いたイベントドリブンな表現をしているサイトが目立つ
  • 多くのプログラマーのBlogの記事に「addEventListner」という単語が見られる
  • addEventListnerを使う理由は何か?

質問者が選んだベストアンサー

  • ベストアンサー
  • auty
  • ベストアンサー率58% (284/486)
回答No.1

・ 「イベントを登録」するための標準モデルとして現在    DOMレベル2   があります。「addEventListner」はこれに属します。 ・ 例に挙がった「target.onmousemove」等は、    DOMレベル0   とも呼ばれています。 ・  DOMレベル2の方が当然高度な機能を持っています。たとえば    1. イベントの伝播(キャプチャリング・バブリング)    2. 1つのイベントに対して、複数のイベントハンドラを登録できる。    3. イベントリスナも単純な関数ではなく、オブジェクトとして扱える。    等があります。 ・ なお、IEは、現在独自な物となっています。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 「nullまたはオブジェクトではありません」というエラーが出ます。

    こんにちは、IE7、VISTAで試しています。 エラーもなく動いたのですが、 sClientXとsClientYの値をフォームメールでデータ送信したくて clientX=<input type="text" id=sClientX><br> clientY=<input type="text" id=sClientY><br> という部分を<form>内に入れると 「sClientXはnullまたはオブジェクトではありません」 というエラーが出ます。 エラーの原因はなんでしょうか? <HTML> <HEAD> <SCRIPT language="JavaScript"> <!-- var sample; var sClientX; var sClientY; var target; var isDrag=0; function document_onmousedown(){ isDrag=1; target=event.srcElement;} function document_onmousemove(){ if( isDrag ){ target.style.top=event.clientY-8; target.style.left=event.clientX-8;} } function document_onmouseup(){ isDrag=0; sClientX.value = document.getElementById('sample').style.left; sClientY.value = document.getElementById('sample').style.top; } document.onmouseup = fOnmousemove; function fOnmousemove() { } //--> </SCRIPT> </HEAD> <BODY onmousemove="document_onmousemove()" onmousedown= "document_onmousedown()" onmouseup="document_onmouseup()"> <DIV style="position:absolute" id=sample> このオブジェクトが移動します </DIV> <DIV id=text1 style="position:absolute;font-size:24px; cursor:hand"> </DIV> <form> clientX=<input type="text" id=sClientX><br> clientY=<input type="text" id=sClientY><br> </form> </BODY> </HTML>

  • 画像をドラッグ&ドロップで移動したい

    画像をドラッグ&ドロップで移動したいのですが、 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>

  • 文字を移動させその位置を表示したい

    複数のプログラムを拝借し組み合わせたのですが、以下3点の内容にしたく質問しました。宜しくお願いいたします。 (1)文字「このオブジェクトが移動します」を移動させその位置を表示したいのですが、マウスの位置が表示されています。 (2)文字「このオブジェクトが移動します」に合わせクリックすると反転表示になりますが反転表示にならないようにしたいです。 (3)動作するのですがエラーが表示されます。エラーの原因は何でしょうか? <HTML> <HEAD> <STYLE type="text/css"> </STYLE> <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-8; target.style.left=event.clientX-8;} } function document_onmouseup(){ isDrag=0; sample.style.top=text1.style.top; sample.style.left=text1.style.left; } document.onmouseup = fOnmousemove; function fOnmousemove() { sClientX.value = event.clientX; sClientY.value = event.clientY; } //--> </SCRIPT> </HEAD> <BODY onmousemove="document_onmousemove()" onmousedown= "document_onmousedown()" onmouseup="document_onmouseup()"> <DIV style="position:relative" id=sample> このオブジェクトが移動します </DIV> <DIV id="test" id=text1 style="position:absolute;font-size:24px; cursor:hand"> </DIV> <SCRIPT language="JavaScript"> </SCRIPT> clientX=<input type="text" id="sClientX"><br> clientY=<input type="text" id="sClientY"><br> </BODY> </HTML>

  • 移動できる顔文字とマウスポインタとのズレが生じる

    顔文字をマウスポインタで移動できるようにしたのですが、 画面上では問題ないのですが画面下の方に移動させると顔文字とマウスポイントの位置が重ならず距離が生じてしまいます。マウスポイントと顔文字が重なって移動するようにするにはどうすればいいでしょうか? 宜しくお願いいたします。 <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-8; target.style.left=event.clientX-8;} } function document_onmouseup(){ isDrag=0; } </SCRIPT> <BODY onmousemove="document_onmousemove()" onmousedown= "document_onmousedown()" onmouseup="document_onmouseup()"> <DIV id=text1 style="position:absolute;font-size:24px; cursor:hand"> (^ ^; </DIV> <BR> <BR> <BR> <BR>a <BR>a <BR>a <BR>a <BR>a <BR>a <BR>a <BR>a <BR>a <BR>a <BR>a <BR>a <BR>a <BR>a <BR>a <BR>a <BR>a <BR>a <BR>a <BR>a <BR>a <BR>a <BR>a <BR>a <BR>a <BR>a <BR>a <BR>a <BR>a <BR>a <BR>a <BR>a <BR>a <BR>a <BR>a <BR>a <BR>a <BR>a <BR>a <BR>a <BR>a <BR>a <BR>a <BR>a <BR>a <BR>a <BR>a <BR>a </body> </HTML>

  • ボタン上でマウスを押している間に、ウィンドウをスクロールしたい

    フォームボタンを押している間、インラインフレームのウィンドウをスクロールしたいのですが 思うように動作してくれません。 最初、タグのonmousedown属性とonmouseup属性を使用して 簡単に実装できると思っていたのですが mouseupのイベントがうまく拾えないようで、あきらめました。 下記のようなマウスドラッグのサンプルソースがあったので こちらを改造しようと思ったのですが、いろいろいじってみてもだめでした。 「マウスが離された」というイベントはどうすれば拾えるのでしょうか? IE限定の動作を予定しています。 よろしくお願いいたします。 <script type="text/javascript"> //tab→全角スペース //マウスをクリックして動かしている間だけスクロールする  window.document.onmousemove = scrollSubWindow;  window.document.onmouseup = scrollOff;  scrollFlag = false;  function scrollOn()  {   scrollFlag = true;  }    function scrollOff()  {   scrollFlag = false;  }    function scrollSubWindow()  {   if( !scrollFlag ) return;   Dummy.scrollBy( 0, 10 );   return false;  }   </script> <iframe src="dummy.html" name="Dummy" width=200 height=200></iframe> <input type="button" value="下へ" onMousedown="scrollOn()" style="width: 200px; height: 200px;">

  • ブロック要素の横スクロールバーのカスタマイズ(画像)

    既に質問を書きましたがつまづいているので書き直します。 ブロック要素の横スクロールバーを画像にしたいです。 http://www.apple.com/jp/mac/ の上のメニューみたいに横にスライドし、スクロールバーを画像にしたいのです。 ボタンをクリックして任意の位置に飛ぶスライドはすでにすでにできています。 スクロールバーを動かすと、ブロック要素のなかをスクロールすることができましたが、以下の方法がわかりません。 1. スクロールバーを中央揃えの幅の決まったエリア内だけを移動させたい。 (スクロールバーをクリックするとウィンドウの一番左にいってからマウスストーカーしはじめ、かつ、またウィンドウをクリックしないとマウスストーカーが終了しない。) 2. スライドバー以外のスライドエリアをクリックするとそこにスライドバーがスライドインするようにしたい。 3. アンカーに飛ばすボタンをクリックし任意の位置にスライドする際、スライドバーも同期させたい。 現在の記述は以下の通りです。 <script language="JavaScript"> var timeout; var x = 0; var step = 5; var icoX = 0; // アイコンの位置 var mouX = 0; // マウスの位置 function down(){ if (x < 0){x=0;} var e=document.getElementById("scrollarea"); if(e.scrollLeft<e.scrollWidth-e.offsetWidth){ sbar.style.pixelLeft=x; e.scrollLeft = x; x = x + step; timeout=setTimeout("down()",2); } } function up(){ if (x >=0 ){ document.getElementById("scrollarea").scrollLeft = x; sbar.style.pixelLeft=x; x = x - step; } timeout=setTimeout("up()",2); } document.onmousemove = onMouseMove; function onMouseMove(e) { mouX = event.clientX; } function onTimer() { icoX += (icoX < mouX) ? 1 : -1; sbar.style.left = icoX + "px"; document.getElementById("scrollarea").scrollLeft = sbar.style.pixelLeft; timeout=setTimeout("onTimer()",2); } function stop1(){ clearTimeout(timeout); } document.onmouseup=stop1; </script> //bodyタグの中のスライドを実装したい部分 <div id="my-glider"> <div class="scroller" style="height: 188px; width:864px;overflow:hidden;" id="scrollarea"> //ここに内容がはいります。長いので省略します。 <table width="860" height="16" border="0" cellpadding="0" cellspacing="0"> <tr> <td width="16"><img src="images/left.gif" width="16" height="16" onMouseDown="up()"></td> <td width="828" bgcolor="#666666"><div id="sbar" style="position:absolute;margin-top:-8px;"><img src="images/hscrollerdex.png" width="100" height="15" onMouseDown="onTimer()" onMouseUp="stop1();"></div></td> <td width="16"><img src="images/right.gif" width="16" height="16" onMouseDown="down()"></td> </tr> </table> </div> </div> javascript初心者です・・・。 アドバイスよろしくおねがいします。

  • メニュー3つとも個々にドロップして移動したいのですが

    メニュー3つとも個々にドロップして移動したいのですが、どのように すれば良いのでしょうか。 お願いします。 <html> <head> <title>ドラッグして画像を移動する</title> <script type="text/javascript"><!-- //2つ適応 window.onload=function(){ flag = false; offx = 80; offy = 100; document.getElementById("menu1").onmousedown= function dragOn(){ flag = true;} window.document.onmousemove = dragImg; window.document.onmouseup = dragOff; function dragOff(){ flag = false; } function dragImg(){ if (!flag) return; document.getElementById("menu1").style.top = event.y-offx; document.getElementById("menu1").style.left = event.x-offy; return false;} } // --></script> </head> <body> <div id="menu1" style="background-color:red; position:absolute; width:120px;height:150px;">メニュー1</div> <div id="menu2" style="background-color:green; position:absolute;top:200px;width:120px;height:150px;">メニュー2</div> <div id="menu3" style="background-color:blue; position:absolute;top:400px;width:120px;height:150px;">メニュー3</div> </body> </html>

  • Delphi6 OnMouseUp

    deiphi6です。 OnMouseDown,OnMouseMoveイベントで返ってくるX,Y座標値と、OnMouseUpで返ってくるX,Y座標値に違いがあります。 例えば、 ScrollBoxの中にPaintBoxを置いて、PaintBoxのWidth(Height)を32768以上にします。 実行させ、スクロールさせてPaintBoxが32768以上のポイントでマウスボタンを押して離すと。 OnMouseUpで返ってくるX(Y)座標はマイナスになります。 また、65536以上にするとまた1から始まるプラスのX座標がかえってきます。 OnMouseDown,OnMouseMoveでは正常なプラス値です。 つまり、Intergerで返ってきてないってことですか? OnMouseMoveでの座標を代用して使ってますが、マウスの早い動きには正確を欠きます。 何かいい回避方法はありませんでしょうか?

  • javascript スライドバー

    ダイナミックHTMLに掲載されている jsでのスライダーを同一ページで複数使いたいのですが どおうすればいいでしょうか? <body onLoad="Init()">で読み込んでいます。 詳しい方がいましたらご教授お願い致します。 var iniX = 150; //バーの初期位置(x) var iniY = 0; //バーの初期位置(y) var dY = -45; //バーに対するスライダーの表示位置(y) var dX1 = 0; //バーに対するスライダーの表示位置(x,最も左) var dX2 = 330; //バーに対するスライダーの表示位置(x,最も右) var valx = -120; //バーに対する数値を表示する位置(x) var valy = -120; //バーに対する数値を表示する位置(y) var minValue = 0; //最小値 var maxValue = 1500; //最大値 var iniValue = 0; //初期値 var M_flag = false; var mdx,mdlayx,mmx,mmlayx; var xmax,xmin; function Init(){ dx = dX2 - dX1; x = dx * ((iniValue - minValue) / (maxValue - minValue)); xmin = iniX + dX1; xmax = iniX + dX2; if(document.all){ document.all("iLf").onmousedown = Mdown; document.onmouseup = Mup; document.onmousemove = Mmove; document.all("iLf").style.posLeft = xmin + x; document.all("iLf").style.posTop = iniY + dY; document.all("iLb").style.posLeft = iniX; document.all("iLb").style.posTop = iniY; document.all("iLv").style.posLeft = iniX + valx; document.all("iLv").style.posTop = iniY + valy; document.all("iLv").innerHTML = iniValue; }else if(document.layers){ }else if(document.getElementById){ document.getElementById("iLf").onmousedown = Mdown; document.onmouseup = Mup; document.onmousemove = Mmove; document.getElementById("iLf").style.left = xmin + x+"px"; document.getElementById("iLf").style.top = iniY + dY+"px"; document.getElementById("iLb").style.left = iniX+"px"; document.getElementById("iLb").style.top = iniY+"px"; document.getElementById("iLv").style.left = iniX + valx+"px"; document.getElementById("iLv").style.top = iniY + valy+"px"; document.getElementById("iLv").innerHTML = iniValue; document.testimg.width = iniValue/4.5; document.testimg.height = 35; } } function Mdown(e){ if(document.all){ mdx = event.x; mdlayx = document.all("iLf").style.posLeft; }else if(document.layers){ }else if(document.getElementById){ mdx = parseInt(e.pageX); mdlayx = parseInt(document.getElementById("iLf").style.left); } M_flag = true; return false; } function Mup(e){ M_flag = false; return false; } function Mmove(e){ if(document.all){ if(M_flag){ mmx = event.x; mmlayx = (mmx - mdx) + mdlayx; if(mmlayx < xmin) mmlayx = xmin; if(mmlayx > xmax) mmlayx = xmax; x = Math.floor((mmlayx - xmin) / dx * (maxValue - minValue) + minValue); document.all("iLf").style.posLeft = mmlayx; document.all("iLv").innerHTML = x; } event.returnValue = false; }else if(document.layers){ }else if(document.getElementById){ if(M_flag){ mmx = parseInt(e.pageX); mmlayx = (mmx - mdx) + mdlayx; if(mmlayx < xmin) mmlayx = xmin; if(mmlayx > xmax) mmlayx = xmax; x = Math.floor((mmlayx - xmin) / dx * (maxValue - minValue) + minValue); document.getElementById("iLf").style.left = mmlayx+"px"; document.getElementById("iLv").innerHTML = x; document.testimg.width = x/4.5; document.testimg.height = 35; } return false; } }

  • JavaScript IDの複数読み込みについて

    JavaScript(プログラミング)はほとんど知識のないもので、 自分なりに調べたのですが、分からないので質問させていただきます。 下記のようなJavaScriptがあります。 window.onload = function() { var target = document.getElementById("●●"); target.addEventListener("touchstart", function(){this.className="touchstyle";}, false); target.addEventListener("touchend", function(){this.className="notouchstyle";}, false); } "●●"のほかに"▲▲" "■■"というIDを読み込ませたいのですが、 それは可能でしょうか。 ("xxx"はclass指定に変更でも構いません) 色々と試してみたのですが、うまくいかず困っております。 何卒ご教授のほど宜しくお願い致します。