• 締切済み

Javascriptで教えてください

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

みんなの回答

  • t_ohta
  • ベストアンサー率38% (5077/13264)
回答No.2

OnButtonClick(); という関数をどこからコールしたいか書かれていませんが、この関数をコールする部分が何処にあるかが問題だと思います。 1の書き方の場合は OnButtonClick(); はグローバルスコープなので、ページ内の何処からでもコールすることが可能になります。 一方2の書き方は $(function () { ・・・ } という関数内で OnButtonClick(); 関数を定義しているので関数スコープとなり、 $(function () { ・・・ } 内からしかコールできない関数になり、 $(function () { ・・・ } の外からコールしようとすると undefined エラーになります。 このあたりは実際のエラーメッセージをみれば理由が分かりますので、実行できなかったと言う結論だけではなくエラーメッセージを添えて質問すると回答しやすくなります。 (ご自身でもエラーメッセージを読み解く訓練をしましょう)

  • chirakuma
  • ベストアンサー率58% (253/430)
回答No.1

何をしたいのかが明記されていないので良くわかりませんが、 $(function () {} はページのreadyで実行されるコード記述するものなので、 $(function(){ alert('クリック'); }) とか書いておけばアラート窓は出るはずです。 詳しいタイミングと分類は下記を参照ください。 http://qiita.com/mimoe/items/74cb3a01a30162759fdd jQueryを使ってクリックイベントで発火するなら .on('load',~~) のほうを使った方が良いです。

関連するQ&A

  • 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>

  • 現在のhtmlにjavascriptを記述する際の書き方を教えてくださ

    現在のhtmlにjavascriptを記述する際の書き方を教えてください。 今までは以下のように記述していました。 このように<script>タグで囲む方法は古いらしいのですが・・・ <script type="text/javascript"> <!-- function test{   alert(1); } //--> </script>

    • ベストアンサー
    • HTML
  • JavaScriptがFirefoxで動かない・・・

    よろしくお願いいたします。 IEでは正常に動作するのですが、Firefoxで実行してみると ボタンを押しても何の反応もありません。 どのように変更すればFirefoxで動作するのでしょうか? よろしくお願いいたします。 <SCRIPT LANGUAGE="JavaScript"> <!-- function warning(){ alert("テストです。"); } //--> </SCRIPT> <FORM><INPUT type="button" value="ボタンを押して。" onClick="warning()"></FORM> 上記のコードを外部に独立させて・・・ 【コード】 <script type="text/javascript" src="sample3.js"></script> <input type = "button" name = "button3" value = "sample3" onclick = "Func3();"> 【sample3.js】 function Func3() { alert("js外部ファイル記述"); } です。 FC2ブログで活用したいのですが・・・ 改行の扱いは「HTMLタグのみ」に設定しています。 ご回答、よろしくお願いいたします。

  • JavaScriptのinnerHTMLの挙動について

    下で"JavaScript内からJavaScriptを書き出したいのですが"で質問したものですが,ソースコードを簡単にして再質問したいと思います. ソースは以下のようにし,divタグのところにinnerHTMLで文字"test"とJavaScriptでアラートを表示させるものです.表示してみたところ,"test"は表示されるのですが,アラートは出てきません. これはinnerHTMLではHTMLのタグは評価されるが,JavaScriptは評価されない,ということなんでしょうか.JavaScriptのこのような仕様は調べにくいので困っています.回答宜しくお願いします. <html><head><title></title> <SCRIPT type="text/javascript"> <!-- var str='<font color="blue">test</font><script type="text/javascript">alert(123);</script>'; function gogo(){ document.all("here").innerHTML = str; } //--> </SCRIPT> </head><body> <div id="here" style="position:absolute;width:600px;left:0px;top:0px;"></div> <SCRIPT type="text/javascript"> <!-- gogo(); //--> </SCRIPT></body></html>

  • script要素をまたいだ関数定義と実行

    最近、javasriptを勉強しています。 わからない挙動があったので質問させてください。 htmlファイル内に、 <script type="text/javascript"> f(); function f(){ alert("hoge"); } </script> ↑これが動いて、 <script type="text/javascript"> f(); </script> <script type="text/javascript"> function f(){ alert("hoge"); } </script> ↑これが動かないのはどうしてなのでしょう? htmlの解析順序?の関係だと思うのですが、 詳しく解説しているページなどがあれば教えてください。

  • javascriptの中でjavascriptを呼びだしたいのです。

    javascriptで質問です。 javascriptの中でjavascriptを呼びだしたいのです。 実際にやるとエラーになりますが、方法はありますでしょうか。 xが1のとき、script1.js xが2のとき、script2.js のように実行を分けたいので、このような処理を したいのですが。 何卒よろしくお願いいたします。 <script type="text/javascript"> <script type='text/javascript' src='http://www.domain.com/script1.js'></script>"; </script>

  • htmlTextで書き出したテキストからjavascriptへ

    flashCS4 AS3.0で作業しています。 htmlTextでダイナミックテキストに <a href="javascript:void(0)" onclick="hoge();">テスト1</a> と書き込んでます。 そのswfが貼付けてあるhtmlに書いてある <script type="text/javascript" language="javascript"> <!-- function hoge(){ window.alert('ボタンを押しましたね'); } // --> </script> を動かしたいのですがウマく行きません。 どなたかいい方法しっている方いませんか?

  • javascript + php でエラー

    エラーを取り除くことができず、困っています。 助けてください。 下記のようなコードで、PHPからjavascriptに文字列を渡しているのですが、 文字列に改行コードがあるとエラーになってしまいます。 (改行コードがない場合はエラーはでません) 文字コードはEUC-JP、改行はLFとしています。 エラーの原因と、対策を教えてください。 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=euc-jp"> <meta http-equiv="Content-Script-Type" content="text/javascript"> <script type="text/javascript"> <!-- function sampl(str) { alert(str); } //--> </script> </head> <body> <form method="post" action="#"> <?php $str = "テスト\n改行あり"; ?> <input type="button" value="実行" onClick="sampl('<?=$str?>')"> </form> </body> </html>

  • Javascript 数か所のTextに10キーを

    scriptの超初心者です。以下のように記述して(サンプルを参照して)1か所の入力は可能になりましたが、同じページ上で他の部分はscriptが聞いていないようなのですが、IDなどを変えていくべきですか?つまり二か所目のIDに数字を加えて、scriptでの#部分も数字を付け加える必要がありますか? html <input type="text" width="4" height="3" name="sen17" value="" id="defaultKeypad"> script <script type="text/javascript"> $(function() { $('#defaultKeypad').keypad(); $('#viewKeypad').click(function() { alert('現在の入力値: ' + $('#defaultKeypad').val()); }); $('#removeKeypad').toggle(function() { $(this).text('Re-attach'); $('#defaultKeypad').keypad('destroy'); }, function() { $(this).text('Remove'); $('#defaultKeypad').keypad(); } ); }); metaには <script type="text/javascript" src="jquery.keypad.js"></script> 必要なjsファイルは配置してあります 超基本的な質問で済みませんが、よろしくお願いします。

  • javascriptで困っています。教えてください

    以下のようにjavascriptの内容を書いた外部のテキストファイルを読み込んで、実行しようとしているのですが、うまくいきません。普通にjavascriptを読み込むのは分かっているのですが、このような方法ができないのでしょうか?よろしくお願いします。 <!doctype html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>無題ドキュメント</title> </head> <body> <div id="jsbox"></div> <script type="text/javascript"> var jsbox = document.getElementById("jsbox"); //非同期通信///////////////////////////////////////////// var xmlHttp; loadText(); function loadText(){ if (window.XMLHttpRequest){ xmlHttp = new XMLHttpRequest(); }else{ if (window.ActiveXObject){ xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); }else{ xmlHttp = null; } } xmlHttp.onreadystatechange = checkStatus; xmlHttp.open("GET", "http://xxxxxxxxxxxx/js_test.txt", true); xmlHttp.send(null); } function checkStatus(){ if (xmlHttp.readyState == 4 && xmlHttp.status == 200){ var str = xmlHttp.responseText;alert(str); jsbox.innerHTML = str; test_js(); } } ///////////////////////////////////////////////////////////////// </script> </body> </html> テキストファイルをhttp://xxxxxxxxxxxx/js_test.txtに置き、テキストファイルの内容が <script type="text/javascript"> function test_js(){ alert("test"); } </script>

専門家に質問してみよう