イベントハンドラを使わずに実行するには?

このQ&Aのポイント
  • ページが読み込まれたらフォームにフォーカスを移す方法について
  • 掲示板での機能実現における問題点と解決策
  • onLoadを使わない方法や他の要素での使用方法について
回答を見る
  • ベストアンサー

イベントハンドラを使わずに実行するには?

googleのように、ページが読み込まれたらフォームにフォーカスを 移すということをやりたいのですが、onLoadのようなイベントを 使わずに行うことは出来ますでしょうか? 掲示板でこの機能を使いたいと思っています。しかし、全てのページに フォームがあるわけではないので、<body onLoad="~">で実現すると フォームがない時にエラーが発生してしまいます。 document.write( "hoehoe" ); が直書きで実行されるなら同じようにできるのでは? と思って <script> <!-- document.form.comment.focus(); // --> </script> とやってみましたができませんでした。 onLoadを使わない方法、もしくは<body>以外でonLoadを使う方法が ありましたら是非教えてください。

  • syg
  • お礼率53% (7/13)

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

  • ベストアンサー
  • kokucho81
  • ベストアンサー率61% (157/255)
回答No.1

一度document.form判定を入れれば良いのでは? ないかもしれないと言うときは、あることを判定すれば良いわけで・・・・ <script> <!-- if (document.form) { フォームがあるので、フォームにフォーカスするにょ♪ } // --> </script>

syg
質問者

お礼

教えていただいた通りにやったらできました! ありがとうございます。

関連するQ&A

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

    例えば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()の実行 となりました。(これもなぜこうなるのかよくわかりせん) 以上、イベントハンドラに最初から任意に入れられている処理を残しつつ、 さらに処理を加えるにはどうすればよいのかご教示お願いします。

  • フォーカスする際のテキストフィールド名を変数で渡したい

    表のような入力フォームがあって、submitした際にあるプログラムが走り、HTML本体を再読み込みしています。 画面が表示されたときに、テキストフィールドにあらかじめフォーカスを合わせるには、以下のOnloadとfocus()を使いますよね? <body onLoad="document.Form.Field.focus()"> で、再読み込み時には、次の入力用テキストフィールドへフォーカスを合わせたいのですが、どうすればいいでしょうか? 例えば A1 A2 A3 というとき、A1を入力後、後ろでプログラムが走り、再読み込みして画面が再表示されたときに、A2にフォーカスがうつっている、という感じです。通常の書き方だとBodyにはひとつか(A1しか)かけないので・・・変数を使ったらどうかと思ってやってみましたがうまくいきません。 <SCRIPT LANGUAGE="JavaScript"> <!-- var f; f = "A1"; window.alert(f); //--> </SCRIPT> <body onLoad="document.Form.(f).focus()"> 又は <body onLoad="document.Form.var(f).focus()"> <body onLoad="document.Form.f.focus()"> フィールドにindextabをしてみましたがダメでした。又A1にonBlurが入っております。 そもそも変数なんて使えるのでしょうか? 変数以外の方法でも、他にアイディアがあればお願いします。 締切りが明日で非常にあせっています。 よろしくお願いいたします。

  • 外部ファイルでBODYのonloadイベントの関数を指定するには?

    (1)<BODY onload="funcA()">という形でなく、 ヘッダー内に入れた外部ファイルに (2)document.body.onload=funcA; としたいのですが、 「document.bodyはオブジェクトではありません」 というエラーになってしまいます。 <script language="javascript" src="xx.js">は <head></head>の中に入れています。 どうしたら(2)の方法で、 外部ファイルでbodyのonloadイベントの関数を指定できるでしょうか?

  • オブジェクトが存在しない

    というエラーが次のhtmlファイルをブラウザで表示させようとするとでます if(document.form0.title!=null) で判断しているだけでだめみたいです そしたらdocument.form0.titleが存在するかどうかをエラーなしで判断させる方法はあるのでしょうか? <HTML> <HEAD> <script type='text/javascript'> <!-- function FormFocus() {  if(document.form0.title!=null)document.form0.title.focus(); } // --> </script> </HEAD> <body onload='javascript:FormFocus()'> <form name='form0'></form> </BODY> </HTML>

  • JavaScriptを最後に実行するには?

    JavaScriptでリンクをランダムに表示するようにしたところ、 少し表示が遅く感じるようになったため、 最後にJavaScriptを実行するようにonloadイベントを使って [外部(JavaScript)ファイル] <!-- window.onload = function onload(){ var random = Math.floor(Math.random() * 3); if(random == 0) document.write('<a href="URL1">サイト名1</a>'); else if(random == 1) document.write('<a href="URL2">サイト名2</a>'); else if(random == 2) document.write('<a href="URL3">サイト名3</a>'); }; //--> [HTMLファイル内] <script type="text/javascript" src="./フォルダ名/ファイル名.js"></script> のように書いて試しましたが、真っ白なページにこのスクリプトの内容だけが表示されてしまいます。 "window.onload = function onload{"と、最後の"};"の部分を追加するまでは普通に動いていました。 また、ページ内に、別の外部ファイルも含めて同じようなものを複数組み込みたいと思っています。 この方法でなんとか表示したいのですが、 別の方法も含め、情報をいただきたいです。 わかりにくいところがあれば補足します。 よろしくお願いします。

  • PHPファイル内のテキストフォームにカーソルを当てる

    Javascriptでは、 <body onLoad="document.form.(フォーム名).focus();"></body> という一行を書き込めば、指定したテキストフォームに最初からカーソルが当たっている状態となると思いますが、これをPHPファイル内の、echo文の中に書かれたテキストフォーム u_id にページ読み込み時からカーソルを当てる方法はないでしょうか? ちなみに該当部分のPHPスクリプトは以下のとおりです。 echo "<TD WIDTH=50%><INPUT TYPE=TEXT NAME=u_id SIZE=12></TD></TR>\n"; よろしくお願いします。

    • ベストアンサー
    • PHP
  • テキストボックスへの引数によるフォーカスの設定

    こんにちは。 ASP.NET(VB)でサイトを作っています。 ページを表示した時にテキストボックスにフォーカスを設定したいと思っています。 ネットなどで検索していましたら<body onLoad="document.Form.textbox.focus()"> とすれば出来るようなので、実際に設定してみましたら、「'document.form.LoginID'はNullまたはオブジェクトではありません」というエラーが出てしまいます。 どうすればASPのコントロールにフォーカスを設定できますか?

  • javascriptで、イベントが発生しない

    下記ソースで、address1をクリップボードから貼り付けても、 function changeaddress1() がよばれないのは、 なぜでしょか? また、からなず、呼ばれるイベントはありますでしょか? ****************************************************************** <html xmlns="http://www.w3.org/1999/xhtml" pageEncoding="UTF-8"> <head> <script type="text/javascript" charset="UTF-8"> function changeaddress1() { var strAddress1 = document.zip_form.address1.value; document.write("strAddress1:"+strAddress1); } </script> </head> <body> <form action="./" id="zip_form" method="post"> <input type="text" id="address1" name="address1" onChange="changeaddress1()> </form> </body> </html>

  • 次のJavaScript

    <HTML> <HEAD> ・・・・・・・・・・・・・・・・ <script type='text/javascript'> <!-- function FormFocus() { document.form0.title.focus(); <-----error } // --> </script> </HEAD> <body onload='FormFocus()'> <form name='form0' method='post' action='http://hpcgi.nifty.com/xxxx/mypage.cgi#form'> ・・・・・・・・・・・・・・・・ </body> </HTML> がerrorとしているところでエラーになります 何か間違いあれば教えてください

  • イベントハンドラに設定された関数を取得し、実行するには?

    <html>   <body>     <script language="JavaScript" type="text/javascript">       function test(){         alert("testです")       }     </script>     <input id="btntest" type="button" value="test" onclick="test()"/>   </body> </html> このhtml文書に対し、 ・test(); ・document.getElementById("btntest").click;(ByTagName等を使用しても同じ方法とする) 上記方法以外にJavaScriptを用いて、 test()を実行するにはどうすればよいでしょうか? var eventobj = document.getElementById("btntest").onclick; eval(eventobj); 上記みたいな形でevalをよくわからずに試してみましたがダメでした。

専門家に質問してみよう