JavaScriptの実行順番とonkeyupの挙動について

このQ&Aのポイント
  • JavaScriptの実行順番については、onkeydown→onkeypress→onkeyupの順でイベントが発生します。
  • ただし、質問のサンプルコードではonkeyupが実行されませんでした。
  • なぜonkeyupが実行されないのかについて調査を行いました。
回答を見る
  • ベストアンサー

javascriptの実行の順番

下記サイトには https://w3g.jp/xhtml/dic/onkeydown 「onkeydown属性, onkeypress属性, onkeyup属性を同一の要素に併せて使用した場合、イベントは onkeydown→onkeypress→onkeyup の順に発生します。」 とありましたので下記サンプルを作成して「a」と入力したところonkeydown, onkeypressは 実行されましたがonkeyupだけ実行されませんでした。onkeyup単独だけなら実行できたのですが なぜonkeyupは実行されないのでしょうか。 【サンプル】 <html> <head> <script> function down() { alert("down"); } function up() { alert("up"); } function press() { alert("press"); } </script> </head> <body>   <input type="text" onkeydown="down();" onkeypress="press();" onkeyup="up();"> </body> </html>

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

  • ベストアンサー
  • Gotthold
  • ベストアンサー率47% (396/832)
回答No.1

alertなんか出すから、 keyupの時には既にアラートにフォーカス奪われてるんじゃないの? ================== <html> <head> <script> function down() { document.getElementById("log").innerHTML += "down<br>"; } function up() { document.getElementById("log").innerHTML += "up<br>"; } function press() { document.getElementById("log").innerHTML += "press<br>"; } </script> </head> <body> <input type="text" onkeydown="down();" onkeypress="press();" onkeyup="up();"> <div id="log"></div> </body> </html>

unko347
質問者

お礼

ご回答ありがとうございます。 ご提示いただいた方法で onkeydown→onkeypress→onkeyup の順で実行されることが確認できました。

関連するQ&A

  • [jQuery] クリックで連番関数を順番に実行

    ボタンをクリックする度に連番で作成した関数を順番に実行したいのですが、スマートな書き方がわかりません。 下記のコードで一応動くのですが、関数が100個とかに増えた場合すごくコードが長くなってしまいます。 もっとスマートに書く方法はないものでしょうか? ▼サンプルコード <html> <head> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> <script> $(function(){ function s1(){alert('s1');}; function s2(){alert('s2');}; function s3(){alert('s3');}; var num = 1; $('p').click(function() { if(num == 1){s1();} else if(num == 2){s2();} else if(num == 3){s3();} num++; return false; }); }); </script> </head> <body> <p>click</p> </body> </html>

  • Javascriptで教えてください

    下記1だと実行できるのですが、2だと実行できないのはなぜでしょうか 1 <script type="text/javascript"> function OnButtonClick() { alert('クリック'); } $(function () { }) </script> 2 <script type="text/javascript"> $(function () { function OnButtonClick() { alert('クリック'); } }) </script>

  • javascript 初心者です

    javascript 初心者です 設定したグローバル変数を引数に指定したいのですが、うまくいきません。 下記のスクリプトのように書いてみたのですが、○が返ってきてしまいます。 どうすればうまくいくでしょうか?よろしくお願いします。 <html> <head> <script type="text/javascript"> <!-- i = false; function myFunc(hensu){ if(hensu){ alert("○"); } else{ alert("×"); } } --> </script> </head> <body> <p onclick="myFunc('i')">[btn]</p> </body> </html>

  • phpソースの中のjavascriptを実行する方法

    現在、AJAXの勉強をしているプログラミング初心者です。 環境はapache2,php5です。 phpのソースの中にjavascriptを埋め込んだものを動作させるには どうしたらよいのかが分かりません、 例えば以下の2つのファイルの場合。 abc.php↓ --------------------------------------------------------------- <html> <head></head> <body> <?php echo "こんにちわ"; ?> <script tyep="text/javascript"> alert("hello"); </script> </body> </html> --------------------------------------------------------------- abc.html↓ --------------------------------------------------------------- <html> <head> <script> try{ var obj= new ActiveXObject("Microsoft.XMLHTTP");} catch(e){var obj=new XMLHttpRequest();} function load(point){ obj.open("POST","abc.php",true); obj.send(null) obj.onreadystatechange=change; } function change(){ if(obj.readyState==4){ document.getElementById("target").innerHTML=obj.responseText; } } </script> </head> <body> <div id="target"></div> <a href="#" onclick="load();">click!</a> </body> </html> --------------------------------------------------------------- としたところ、 abc.phpを実行した場合はabc.phpのjavascriptが実行されてアラートがでるのですが、 abc.htmlからabc.phpにリクエストを出して出力された場合には、 javascriptが実行されずにアラートが出ない。 どうしてこのようになるのでしょうか? また解決策があれば教えてください。 よろしくお願いします。

  • javascript 初心者です 引数と変数について

    下記のスクリプトで○と×交互に表示されるようにしたいのですが、 hensu = !hensu;のところがうまく機能してくれません。 i = !i;だとうまくいくのですが、引数を使いたいです。 どのように記述すればよいのでしょうか? よろしくお願いします。 <html> <head> <script type="text/javascript"> <!-- i = true; function myFunc(hensu){ if(hensu){ alert("○"); } else{ alert("×"); } hensu = !hensu; } --> </script> </head> <body> <p onclick="myFunc(i)">[btn]</p> </body> </html>

  • 下記コードの実行方法について質問です。

    問題のコードは下記ですが、 bodyタグに onLoad="firstFunc()" と書かずに実行したいのですが、 スマートな方法はないでしょうか? よろしくお願いいたします。 <script type="text/javascript"> function firstFunc(){ var aFunc = document.getElementById('btn'); aFunc.onclick = function(){ alert('りんご'); } } </script> </head> <body onLoad="firstFunc()"> <button id="btn" name="ボタン">getElementByIdでonclickのイベントを追加できる。</button> </body>

  • javascriptで印刷ダイアログを出力すると同時に

    javascriptで印刷ダイアログを出力すると同時に setTimeouで一定時間後にアラートを表示していたのですが、 IE8では印刷ダイアログが表示されている時はタイマーが止まってしまうようです。 また、IE6では動作しました。 なにか解決方法はないでしょうか? 以下がサンプルソースです。 <html> <head> <title>setTimeout</title> <script type="text/javascript"> function aaa() { alert("タイムアウトしました。"); } function func() { setTimeout("aaa()", 5000); window.print(); } </script> </head> <body onload="func()"> aaa </body> </html>

  • javascriptにてonclickを無効

    javascriptにてonclickを無効にしたい 下記のように、onclickイベントキャンセルを書きましたが、 onclickのjavascriptが実行されます。 何かヒントはありませんか? <html> <head> <script language="JavaScript"> document.onclick = function(e) { event.returnValue = false; } </script> </head> <body> <a href="a.htm" onclick="alert('onclick');">onclick有り</a> <a href="a.htm">onclick無し</a> </body> </html> ※環境 Windows2000(sp4)+ie6(sp1)

  • javascriptとjqueryをおしえて

    下記のようにonclick属性からもしくは、$(funciton(){ });の外からtest()を実行することは できますでしょうか? ご教示ください。 よろしくお願いします。 <p onclick="test()">test1</p> <script> $(function(){ function test(){ } }); </script>

  • 現在のカーソル行を知りたい。

    'KeyDown'の下記サンプルコードでfunction msgにきたときに 何番目のテキストボックスでKYyDownされたか知りたいのですが、 関数があればお教え下さい。 <html> <head> <script type="text/Javascript"> <!-- function msg(str) { alert("check"); } //--> </script> </head> <body onKeyDown="msg('KeyDown')"> key<br> <form name="myForm" method="POST" target="_self"> <input type="text" name="text1><BR> <input type="text" name="text1"><BR> <input type="text" name="text1"><br> <input type="submit" name="button1" value="button"> </form> </body> </html>