[三流君] −−> [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でした。 ~~~~~~~(↑オイオイ、また攻撃食らうぞ(笑))

フィードバック

VBA系の→[掲示板]←を覗く、質問を書き込む

評価・感想

No.153を読んだ満足度(評価)は?
5満足(参考になった)
4まぁまぁ(一部参考になった)
3普通(どちらとも言えない)
2なんかなぁ(期待と違った)
1不満(読んで損した気分)
作者に感想・質問を送る場合は下記に気軽に書いてください
あなたのお名前(ニックネーム) さん

作者からの返信は、 不用 E-mail で受信したい
*質問・感想はメルマガで紹介する場合があります

ページフッター(リンクや広告など)


[三流君(TOP ken3.org へ戻る)]
-- [VBA系TOPへ]
---- [VBA系バックナンバー目次へ移動]
------ [VBAでIEを操作 CreateObject("InternetExplorer.application")]・・・実は当店一番人気、VBAでIEを操作するサンプルです
------ [VBAでOutlookの操作 CreateObject("Outlook.Application")]・・・Outlookを使い、メール関係の処理です
------ [Access から Excel 連携 CreateObject("Excel.Application")]・・・人気のAccessからExcelへデータ書き出しなどです
------ [AccessのUserForm/サブフォームを操作]・・・アクセスでフォームを使ったサンプルです
------ [Accessのレポートを操作]・・・レポートを操作してみました
------ [Access クエリー関係やその他関数]・・・あまりまとまってませんが、スポット的な単体関数の解説です
------ [Excel UserForm(ユーザーフォーム)を操作する]・・・エクセルでユーザーフォームを作成して入力などを行ってます
------ [ExcelからAccessを操作する]・・・ExcelからAccessのマクロを起動してみました、
------ [Excel関係 関数、その他]・・・その他Excel関係です
------ [VBAでテキストファイル(*.txt,*.html,*.csv)の操作]・・・テキストファイルを使ったサンプルです
------ [VBA 標準関数関係とその他解説]・・・その他、グダグタ解説してます


広告
-- [通販系の売れ筋広告へ] ←主に楽天やAmazonのランキングです
blog
-- [三流君の作業日記] ← 日々の作業を少々
-- [通販あしあと] ← 通販ページの足跡を一覧で羅列

情報を探す

情報を探すならGoogleかな?

↓Web全体、サポート情報(support.microsoft.com)や三流君VBA(ken3.org)から検索する
Google
Web www.ken3.org
www.microsoft.com support.microsoft.com

あとは、項目別にMSでお勉強かな?
◆ マイクロソフト サイトの歩き方
◇ How-To インデックス
◇ FAQ インデックス
◇ スキルレベル別おすすめコンテンツ
◇ テクノロジ マップ
◇ テーマ別技術資料一覧

書籍の購入

Webだけじゃさすがに勉強しきれないので、プログラミング関係の書籍も読んでみては??

コンピュータ書籍の発送がハヤイ専門店

コンピュータの本・専門店
種類が豊富で探し易いです。※在庫ありが48時間以内発送が急ぎで資料や書籍がほしい時、とても助かります。
お奨め本の目次を見るだけでも勉強になったり

amazon.co.jpでキーワード別チェック

下記、私が設定したキーワードですが、こんな感じで資料や書籍を探ってみては?
[VBA全体を把握する] -- やはり全体をさらっと見たいですよね。
[SQL関連でDB力UP] -- システムはデータベース設計が重要
[ADO接続を探る] -- VBAなのでADO接続を押さえておく
[Windows APIを探る] -- さらにAPIになて知ってれば強力だ!
[.NETを探る] -- と言っても時代は.NETに流れてるし
プログラミング以外でも知りたいことは多くって、
[人間関係] -- で、客先・上司、まわりに気を使い。
[プログラマーの自己啓発] -- プログラムだけじゃなくいろいろと向上したいよ
[コーチング・育成] -- 先輩になったら後輩(部下)の面倒をみてね。
そんなこんなでプログラマーっていろいろと大変なんだってば・・・