[三流君] −−> [VBAで楽しく] −−> [バックナンバー一覧]
−−> No.153 HTML JavaScript onchangeで選択後内容を変更する

HTML JavaScript onchangeで選択後内容を変更する

メルマガ発行内容

<HTML JavaScript onchangeで選択後内容を変更する>

こんにちは、三流プログラマーのKen3です。 今回は、 掲示板に来た質問を処理してみたいと思います。 ※またまた、先に来た質問より、後に来た質問を処理してます・・・  ヤバイよね、、信用なくしそう・・・

/* * 1. 今日の狙い・・・ */

掲示板に下記の質問をもらう ---- <FORM name=form1 onsubmit="mai('s');return false;"> <TBODY> <TR> <TD><B>場名</B><BR> <DIV align=right><SELECT onchange=Rdp(); name=JYO> <OPTION value=0 selected>選択項目 </OPTION></SELECT></DIV></TD></TR> <TR> <TD><B>レース</B><BR> <DIV align=right><SELECT onchange=Hdp(); name=Race> <OPTION value=0 selected>選択項目 </OPTION></SELECT></DIV></TD></TR> <TR> あるサイトの一部ぬきだしました。 ここで、おそわったのを、まねして WB1.Document.form1.jyo.selectedIndex = 1 WB1.Document.form1.jyo.Options(1).selected = "selected" WB1.Document.form1.jyo.Options(1).selected = True と、やると、コンボに選択された文字がでました。成功!と おもいきや、つぎのレースの選択項目が、からっぽです。 ためしに、マウスでクリックすると、選択項目が、 ふくまれます。documentも、かわるようです。 どうやら、onchangeが、おきてないためらしい。 これについて、いろいろ、しらべたけど、わかりません。 疑問1:rdp()という関数は、どこにあるんでしょうか。      このhtmlの、最後に、なにか、      scriptが、あるのですが、(よめない)      どうも、それではないみたいです。 疑問2: onchangeを、vbから、起こしてやることは      できないでしょうか。 ---- 値は変えられるけど、 スクリプトが呼ばれなくて、目的の動作をしないってヤツですね。

/* * 2.敵を知るか */

まずは、敵を知るか。 ^^^^^^^^^^^^^^^^^^^^ えっと、関西遠征の藤沢厩舎の馬は、自信があるから遠征してるので買い? デサーモ?の複勝率がいいので要チェック(裏読むと1・2に着てないの?) 砂のアンカツ?実は芝の長距離が得意? なんて、競馬好きの実兄に聞きました。 って、違うか。 少し、まじめに話すと、 関東には、中山・東京・・ 関西には、阪神・京都・・ と レース場があり、レースは、京都11Rとか東京9Rとか指定します。 馬券を買うときは、レース場に注意ですね。 <TD><B>場名</B><BR> <DIV align=right><SELECT onchange=Rdp(); name=JYO> <OPTION value=0 selected>選択項目 </OPTION></SELECT></DIV></TD></TR> <TR> <TD><B>レース</B><BR> <DIV align=right><SELECT onchange=Hdp(); name=Race> <OPTION value=0 selected>選択項目 </OPTION></SELECT></DIV></TD></TR> <TR> 優秀なHTMLフォームで1つのフォームを切り替えて選択させてるみたいですね。 (私ならフォームをtokyo11.htmlやnakayama06.htmlとレースごとに分けそう・・・  あっ、これだと、切り替えるたびに読み込みが走り、レスポンスがわるいのか) 2003年5回京都6日 2003年4回東京6日 9R もみじステークス 9R 昇仙峡特別 10R古都ステークス 10R 奥多摩ステークス 11Rマイルチャンピオンシップ(GI) 11R 霜月ステークス まぁ、こんな感じで、 京都と東京が場名で、 もみじステークスやマイルチャンピオンシップってのが、レースとしましょう。 なんかリアルすぎるな(笑) だから何?って学生さんや普通のOLさんの声が聞こえたり、 そんなこたぁわかっているよなんてオジサン・お姉さん居ると思いますが、 予備知識ってことで。(長いか) ※競馬、私もよくわかっていないので、例が間違っていたらスミマセン。  アンカツって外国人?と兄にギャグかましてる、私はそんなレベルなので。  ペリエって誰?歴史上の人物?

/* * 3.JavaScriptで切り替えるHTMLを書いてみた */

質問と少し離れてしまうが、 自分が興味あったので、連動して選択肢が変わる、そんなフォームを作ってみた ~~~~~~~~~~~~~~~~~~~~~~ ※場名を京都と選択すると京都のレースが表示される ソースをパクって、空のフォームをまず作成する。 <FORM name=form1 onsubmit="mai('s');return false;"> <TABLE BORDER="1"> <TR> <TD><B>場名</B><BR> <DIV align=right> <SELECT onchange=Rdp(); name=JYO> <OPTION value=0 selected>選択項目 </OPTION> </SELECT></DIV></TD> </TR> <TR> <TD><B>レース</B><BR> <DIV align=right><SELECT onchange="Hdp();" name=Race> <OPTION value=0 selected>選択項目 </OPTION></SELECT></DIV></TD> </TR> <TR><TD><INPUT TYPE="submit" VALUE="送信"></TD></TR> </TABLE> </FORM> この選択肢、 場名 JYO と レース Race に対して、変更するスクリプトを作成する。 ( onchange=Rdp(); などで、選択肢を変更したときに走る) <script type="text/javascript"> <!-- //ここからJavaの関数を書いてみる function Rdp(){ // Rdp 場所が選択されたらレース内容を変更する //レース内容を場所に合わせて変更 document.form1.Race.length = 3; //強引にオブジェクトを3にする(ホントは12R) var n = document.form1.JYO.selectedIndex //場名選択位置を代入 alert("開催選択後、Rdp呼ばれたよn="+n); switch (n) { case 1: //東京なら document.form1.Race.options[0].text = "9R 昇仙峡特別"; document.form1.Race.options[1].text = "10R 奥多摩ステークス"; document.form1.Race.options[2].text = "11R 霜月ステークス"; break; case 2: //京都なら document.form1.Race.options[0].text = "9R もみじステークス"; document.form1.Race.options[1].text = "10R古都ステークス"; document.form1.Race.options[2].text = "11Rマイルチャンピオンシップ(GI)"; break; case 3: //中山なら alert("開催してないよ"); break; case 4: //阪神なら alert("開催してないよ"); break; } } function Hdp(){ // Hdp レースが選択されたら次は?(今回は省略) alert("Hdp呼ばれたよ(レース選択後)"); } function mai(parapara){ // maiイベントのテスト // Submitボタンが押されると、ここが走るのでテストする alert("受け取ったのは"+parapara); } // --> </script> JRAのシステムがどうなっているか、わかりませんが、 こんな感じで、レース名を変更させることが出来ます。 http://www.ken3.org/vba/test153.html で テストできます。

/* * 4.終わりの挨拶 */

オマエ、日本語読めないだろう? えっ、なんで? 私は、東京の田舎生まれ(神奈川の近く)ですよ。 だってさ、質問は、 >疑問1:rdp()という関数は、どこにあるんでしょうか。 >     このhtmlの、最後に、なにか、 >     scriptが、あるのですが、(よめない) >     どうも、それではないみたいです。 >疑問2: onchangeを、vbから、起こしてやることは >     できないでしょうか。 ですよ。 だれも、JavaScriptのonchangeなんて聞いてないんだよ!! onchange=Rdp(); のRdp()がソースのどこにも無いって話だろ。 あっ、、、そうでした。 自分が興味があったので、勝手に進めてたけど。 えっと、予想では、本体のファイルと別に外部スクリプトの呼び込みで、 <html> <head> <title>タイトル、競馬で儲けよう</title> <script type="text/javascript" src="jra_script.js"> </script> </head> <body> みたいな感じで、 <script type="text/javascript" src="jra_script.js"> と src="jra_script.js" SRC=ファイル名で、その日のファイルを差し替えているのでは? と深読みしてみました。 まぁ、百歩譲って、それはよしとしようか。 次のイベントが発生しないのは?なんでなの? えっと、テストのHTML作れたので、次回のメルマガで結果報告します。 また、次回の先送りかよ、ホントに発行するの?逃げんなよコラ!! 今回は、テスト用のHTMLファイルを作成しただけでした。 JavaScriptで選択肢を変えながらのFORM作れることを脱線してやってみました。 本線のイベントが発生しない件は、次回に持越しです。 http://www.ken3.org/vba/test153.html でテストできるので、 読者質問の本線、 ^^^^^^^^^^^^^^^^ イベント処理が発生しない/発生させたいをテストしてくれる猛者は、 VBで、 京都を選択後にJavaScriptで変更されたレース名、 マイルチャンピオンシップを選択するプログラムを書いてみてください。 ※けんぞうより先に掲示板にUPしてくれる猛者、募集中です。  (連休明けなので、本業の業務がかたずいたら、    ヒマみて私より早くやってくれるとうれしいです。) 最近、偉そうで感じ悪いと評判の不親切なKen3でした。 ~~~~~~~(↑オイオイ、また攻撃食らうぞ(笑))


ページフッター

ここまで、読んでいただきどうもです。ここから下は、三流君のホームページの紹介・案内です
目的の情報が見つかったか?少々心配しつつ、、、

種類別のリンク や 広告など

気になったジャンル↓を選択してください。

人気記事(来場者が多いTOP3):
[VBAでIE,WebBrowserを操作]・・・VBAでIE,WebBrowserを操作する サンプルです
[Access から Excel 連携 CreateObject("Excel.Application")]・・・AccessからExcelを操作したりデータの書き出しなどです
[VBAでOutlookの操作 CreateObject("Outlook.Application" )]・・・VBAからOutlookを使い、メール関係を処理するサンプルです
↑上記3つみたいなCreateObjectで他のアプリケーションを操作するサンプルが人気です。

Excel関係:
[Excel UserFormを操作する]・・・エクセルでユーザーフォームを作成して入力などを行ってます
[ExcelからAccessを操作する]・・・ExcelからAccessのマクロを起動してみました、
[Excel関係 関数、その他]・・・その他Excel関係です

Access関係:
[Access UserForm/サブフォーム 操作]・・・アクセスでフォームを使ったサンプルです
[Access レポート操作]・・・レポートを操作してみました
[Access クエリーやその他関数]・・・あまりまとまってませんが、スポット的な単体関数の解説です

その他:VBAの共通関数やテキストファイルの操作など
[VBAでテキストファイル(TextFile)の操作]・・・普通のテキストファイルを使ったサンプルです
[VBA 標準関数関係とその他解説]・・・その他、グダグタ解説してます

開発時の操作: [F1を押してHELPを見る]/ [Debug.Print と イミディエイトウインドウ]/ [実行時エラーでデバッグ]/ [ウォッチ式とSTOP]/ [参照設定を行う]

仕様書(設計書?) XXXX書類: [基本設計書や要求仕様書]/ [テスト仕様書 テストデータ]/ [バグ票]/ [関数仕様書]/ [流れは 入力・処理・出力]

※↑文章の味付けが変わっていて、お口に合うかわかりませんが。。。
※※読んで、気分を悪くされたらスミマセン。

Blogとリンク:[三流君の作業日記]/ [VBAやASPのサンプルコード]/ 広告-[通販人気商品の足跡]



[三流君(TOP ken3.org へ戻る)] / [VBA系TOPへ] / [VBA系バックナンバー目次へ移動]