- 締切済み
onChange="javascript:関数名"について
<select onChange="javascript:関数名">という記述のしかたはjavascriptの正しい書き方なのでしょうか? またjavascriptのチェッカーなどがあれば教えてください。よろしくお願いします。
- みんなの回答 (6)
- 専門家の回答
みんなの回答
- koutarou504
- ベストアンサー率44% (182/407)
>javascriptの正しい書き方なのでしょうか? とりあえず誤りではないというのが答えかと。 ただ、予想されているのとはたぶん異なり、 規則の上では javascript という名前のラベル付けがされたと考えられると思います。 (スクリプト上では javascript という予約語はなさそうなので。) 尚、他の方が言われているスクリプトの特定という事は組み込みイベントに対しては <meta http-equiv="Content-Script-Type" content="text/javascript"> の様な META による指定しか HTML では出来なかったと記憶しています。 script 要素に於いては type 属性で指定できますが。 また、HTML としては onChange 属性の値については データを書ける処なので、属性値の終りとかタグの終りとか間違われる値でなければまず問題ありません。 (あとは META の指定状況によるスクリプトを特定した後のスクリプトの問題。) ただ良く判らないのが、ブラウザは実際にはどう判断しているのか? です。 バグなのか仕様なのか、いろいろ振る舞いが違ったりするし・・・。
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
>通常は、この書き方はURLを書く部分に擬似プロトコルとして書きます。 参考のために javascript: について、書かれているサイトを見つけたので、貼っておきます。 http://suika.fam.cx/~wakaba/-temp/wiki/wiki?javascript URIの所には書けても、イベント部分に書けるというような記述は見つけられませんでした。 URI記法も非推奨になるみたいですね。 ただ、こうした名前空間(スクリプト空間?)指定が無い場合、マルチスクリプトで困ったことになると思うので、必要だと思います。 イベント部分に書けるものというと HTML規格的には、単なるCDATAなので、規格違反というわけではないと思います。(結局どう解釈するかはブラウザ依存) では、どこでそういう名前空間指定をするという規格を決めるべきなのかというと、HTMLの規格ですべきなのじゃないかと思います。
- UKY
- ベストアンサー率50% (604/1207)
仕様書にはこういう書き方でスクリプト言語を指定できるとは書いてありません。 これは IE の独自機能ですね。 本来ならば、 <select onChange="javascript:関数名"> と書くと、JavaScript で「関数名」の関数を実行するという意味ではなくて、META 要素などで指定されているスクリプト言語で「javascript:関数名」という命令文を実行するという意味になります。 JavaScript では、「javascript:関数名」という文はラベル付きの文とみなされるだけなので、エラーにはなりません。つまり、こういう書き方をしても特に害はありません。 しかし JavaScript 以外の言語ではエラーになるかもしれません。
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
>javascriptの正しい書き方なのでしょうか? 正しいと思います 例えば、 <script type="text/javascript"> <!-- function proc(){ alert("javascript"); } //--> </script> <script type="text/vbscript"> <!-- Sub proc() alert("vbscript") End Sub '--> </script> のような複数のスクリプトが混在しているような場合、javascript側のproc()を呼び出すという意味になると思います。 (VBScript側の場合vbscript:proc()) ただ、実際にIEで試してみたところ、 <meta HTTP-EQUIV="Content-Script-Type" CONTENT="text/vbscript"> の様に標準のスクリプトが指定されていても、 proc()として呼び出した場合、先に定義されている方が呼び出される様です。 つまり、VBScriptで先に定義されているとそちらが呼び出され、javaScriptで先に定義されているとそちらが呼び出される。 こういう場合、javascript側の関数を呼び出すには、javascript:proc()とすればjavascript側を呼び出せます。 しかし、そうした、スクリプトの混在が無い時に、イベントハンドラ部分にjavascript:proc()と書くのはあまり意味がないと思います。 通常は、この書き方はURLを書く部分に擬似プロトコルとして書きます。
- akanekor
- ベストアンサー率52% (102/194)
>javascriptのチェッカー FireFoxのJavaScriptコンソールじゃだめですか? これで、チェックしてエラー出なければ、大抵のブラウザで 動くと思う。 一応、こんなのもありましたけど、、、 http://www.crockford.com/jslint/index.html
- yambejp
- ベストアンサー率51% (3827/7415)
<select onChange="関数名">の方が一般的です。