• ベストアンサー

3層プルダウン+テキストボックスについて

初歩的な質問かもしれなくて申し訳ないのですが、 http://javascriptkit.com/script/script2/triplecombo.shtmlhttp://javascriptkit.com/script/script2/dcombotext.shtml を組み合わせた3層プルダウン+テキストボックスの作成で難航してしまっています。 各それぞれをいじる事はできるようになったのですが、組み合わせとなると全く分かりません。 お分かりになられる方がいらっしゃいましたら、どうかご教授お願いいたします。

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

  • ベストアンサー
  • kokorone
  • ベストアンサー率38% (417/1093)
回答No.3

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <HTML> <HEAD> <script language="javascript"> <!--// // var strfruit = new Array("果物","ミカン","ブドウ","サクランボ"); // var strfruit0 = new Array("果物を選んでね"); var strmikan = new Array("品種","温州","甘夏","八朔","伊予柑"); var strbudou = new Array("品種","デラウェア","巨峰","マスカット"); var strsakuranbo = new Array("品種","高砂","佐藤錦","ナポレオン"); // var strfruit1 = new Array("品種を選んでね"); var strunsyu = new Array("単価","200","202","203"); var stramanatu = new Array("単価","210","212"); var strhassaku = new Array("単価","220","222","224"); var striyokan = new Array("単価","230","232"); // var strdela = new Array("単価","300","302","303"); var strkyoho = new Array("単価","310","312"); var strhassaku = new Array("単価","320","322","324"); var strmascut = new Array("単価","330","332"); // var strtakasago = new Array("単価","400","402","403"); var strsatou = new Array("単価","410","412"); var strhnapoleon = new Array("単価","420","422","424"); // var sel1_max= 4; var sel2_max= 5; var sel3_max= 4; var i,j,k; var text_array=new Array(sel1_max); for(i=0;i < sel1_max;i ++) { text_array[i] = new Array(sel2_max); for(j=0;j < sel2_max;j ++) { text_array[i][j] = new Array(sel2_max); } } text_array[0][0][0] = "ようこそ xxx商店へ"; text_array[1][0][0] = "タイムサービス ミカン1割引"; text_array[2][0][0] = "タイムサービス ブドウ5%引"; text_array[3][0][0] = "タイムサービス サクランボ1個増量"; text_array[1][1][0] = "うんしゅう だよ"; text_array[1][2][0] = "あまなつ だよ"; text_array[1][3][0] = "はっさく だよ"; text_array[1][4][0] = "いよかん だよ"; text_array[2][1][0] = "でらうぇあ だよ"; text_array[2][2][0] = "きょほう だよ"; text_array[2][3][0] = "ますかっと だよ"; text_array[3][1][0] = "たかさご だよ"; text_array[3][2][0] = "さとうにしき だよ"; text_array[3][3][0] = "なぽれおん だよ"; text_array[1][1][1] = "お買い得だよ"; text_array[1][1][2] = "店長お薦めだよ"; text_array[1][1][3] = "お目が高い"; text_array[1][2][1] = "お買い得だよ!"; text_array[1][2][2] = "店長お薦めだよ!"; text_array[1][1][1] = "お買い得だよ!!"; text_array[1][1][2] = "店長お薦めだよ!!"; text_array[1][1][3] = "お目が高い!!"; text_array[1][3][1] = "お買い得だよ!!!"; text_array[1][3][2] = "店長お薦めだよ!!!"; text_array[2][1][1] = "☆お買い得だよ"; text_array[2][1][2] = "☆店長お薦めだよ"; text_array[2][1][3] = "☆お目が高い"; text_array[2][2][1] = "☆お買い得だよ!"; text_array[2][2][2] = "☆店長お薦めだよ!"; text_array[2][1][1] = "☆お買い得だよ!!"; text_array[2][1][2] = "☆店長お薦めだよ!!"; text_array[2][1][3] = "☆お目が高い!!"; text_array[2][3][1] = "☆お買い得だよ!!!"; text_array[2][3][2] = "☆店長お薦めだよ!!!"; text_array[3][1][1] = "★お買い得だよ"; text_array[3][1][2] = "★店長お薦めだよ"; text_array[3][1][3] = "★お目が高い"; text_array[3][2][1] = "★お買い得だよ!"; text_array[3][2][2] = "★店長お薦めだよ!"; text_array[3][1][1] = "★お買い得だよ!!"; text_array[3][1][2] = "★店長お薦めだよ!!"; text_array[3][1][3] = "★お目が高い!!"; text_array[2][3][1] = "★お買い得だよ!!!"; text_array[2][3][2] = "★店長お薦めだよ!!!"; function CreateList() { Create(document.frmSample.lstsel1, strfruit); Create(document.frmSample.lstsel2, strfruit0); Create(document.frmSample.lstsel3, strfruit0); } //クリア関数 function Clearsel2() { //現在のプルダウンBの個数分削除する for (nDel = document.frmSample.lstsel2.options.length -1; nDel >= 0 ; nDel--) { document.frmSample.lstsel2.options[nDel] = null; } } function Clearsel3() { //現在のプルダウンCの個数分削除する for (nDel = document.frmSample.lstsel3.options.length -1; nDel >= 0 ; nDel--) { document.frmSample.lstsel3.options[nDel] = null; } } function CreateList2() { var nSelectval; Clearsel2(); Clearsel3(); nSelectval = document.frmSample.lstsel1.value; if (nSelectval == "果物") { Create(document.frmSample.lstsel2, strfruit0); Create(document.frmSample.lstsel3, strfruit0); } else { if (nSelectval == "ミカン") { Create(document.frmSample.lstsel2, strmikan); } if (nSelectval == "ブドウ") { Create(document.frmSample.lstsel2, strbudou); } if (nSelectval == "サクランボ") { Create(document.frmSample.lstsel2, strsakuranbo); } Create(document.frmSample.lstsel3, strfruit1); } } function CreateList3() { var nSelectval; Clearsel3(); nSelectval = document.frmSample.lstsel2.value; if (nSelectval == "品種") { Create(document.frmSample.lstsel3, strfruit1); } if (nSelectval == "温州") { Create(document.frmSample.lstsel3, strunsyu); } if (nSelectval == "甘夏") { Create(document.frmSample.lstsel3, stramanatu); } if (nSelectval == "八朔") { Create(document.frmSample.lstsel3, strhassaku); } if (nSelectval == "伊予柑") { Create(document.frmSample.lstsel3, striyokan); } if (nSelectval == "デラウェア") { Create(document.frmSample.lstsel3, strdela); } if (nSelectval == "巨峰") { Create(document.frmSample.lstsel3, strkyoho); } if (nSelectval == "マスカット") { Create(document.frmSample.lstsel3, strmascut); } if (nSelectval == "高砂") { Create(document.frmSample.lstsel3, strtakasago); } if (nSelectval == "佐藤錦") { Create(document.frmSample.lstsel3, strsatou); } if (nSelectval == "ナポレオン") { Create(document.frmSample.lstsel3, strhnapoleon); } } function Create(objList, objArray) { var nMax = objArray.length; var nLoop = 0; for (nLoop = 0; nLoop < nMax; nLoop++) { var oAdd = document.createElement("OPTION"); oAdd.text = objArray[nLoop]; oAdd.value = objArray[nLoop]; objList.add(oAdd); } } function switch_text() { var cur_sel1; var cur_sel2; var cur_sel3; cur_sel1 = document.frmSample.lstsel1.selectedIndex; cur_sel2 = document.frmSample.lstsel2.selectedIndex; cur_sel3 = document.frmSample.lstsel3.selectedIndex; //alert(cur_sel1); document.frmSample.textarea_1.value = text_array[cur_sel1][cur_sel2][cur_sel3]; } //--> </script> </HEAD> <BODY text="#ff80c0" link="#ff80c0" vlink="#ff80c0" alink="#ff80c0" onLoad="CreateList()"> <center> <FORM name="frmSample"> <textarea WRAP="virtual" name="textarea_1" rows=6 cols=60>ようこそ xxx商店へ</textarea><br> 品名:<SELECT size="1" name="lstsel1" onChange="CreateList2();switch_text();"></SELECT><BR> 銘柄:<SELECT size="1" name="lstsel2" onChange="CreateList3();switch_text();"></SELECT><BR> 単価:<SELECT size="1" name="lstsel3" onChange="switch_text();"></SELECT> </center> </BODY> </HTML> 私が作ったサンプルです。 わからないところがあったら、質問してください。

happy_talk
質問者

お礼

分かりやすく、私でも希望通りに編集できました。 ここまでして頂いて、本当にありがとう御座いました。

その他の回答 (2)

  • kokorone
  • ベストアンサー率38% (417/1093)
回答No.2

ベースを http://javascriptkit.com/script/script2/triplecombo.shtml​ で考えると、わかりやすいですよ。 example/stage2/stage3のOnChangeで、redirect()/redirect1()/ redirect2()をCallした後、switch_text();をCallします。 その時、text_arrayは、3次元で定義しておき、現在の選択値で、 text_arrayを決定します。 もう少しわかりやすい例でよければ、後ほど提示します。 提示されているソースはどこまで、理解されているのでしょうか?

happy_talk
質問者

補足

実際内容に関してはほとんど理解できていません。 http://javascriptkit.com/script/script2/dcombotext.shtml​ から 1→1-1→1-1-1      1-1-2    1-2→1-2-1     1-2-2 と言った3階層のぞれぞれでコメントが出るものを作りたかったので調べてはみたのですが、2層目を選んでも3層目が反映されないで止まってしまったと言った感じです。 http://javascriptkit.com/script/script2/triplecombo.shtml​ に対しては、テキストボックスの出し方も分からない状態です。 丁寧に教えて頂いて下さっているのに、申し訳ありません。

  • kokorone
  • ベストアンサー率38% (417/1093)
回答No.1

何がしたいのか? どこで、つまずいているか? がわかりません。 とりあえず、このようなソースを作ってみました とかがわからないと、お答えできません。 3つのセレクトボックス(内容は可変)を選択すると、選択する ごとに、テキストの内容を変更する という仕様なのですか? ・2次元のテーブルを3次元にする ・OnChangeイベントは、各セレクトボックスごとに実行する これくらいで、わかりませんか?

happy_talk
質問者

補足

的を得ない質問になってしまって申しわけありませんでした。 kokoroneさんが仰る通り、 >3つのセレクトボックス(内容は可変)を選択すると、選択する ごとに、テキストの内容を変更する  という事になります。 言い直すと、 http://javascriptkit.com/script/script2/dcombotext.shtml​ で、3階層目(例えばNews SitesのABC NewsのTravelなど)を作る方法についてご教授頂きたく投稿させて頂きました。

関連するQ&A

  • プルダウンからテキストボックスに入力

    プルダウンから選択したものをテキストボックスに表示させています。 <script type="text/javascript"> function displayText(thatOption, textId) { var text1 = document.getElementById(textId); text1.value = thatOption.title; } </script> <SELECT onchange="displayText(this.options[this.selectedIndex], 'text1');"> <option value="1" title=""></option>  #空欄 <option value="2" title="A">A</option> #大文字 <option value="3" title="a">a</option> #小文字 </SELECT> <input type="text" value="" id="text1"> プルダウンを2個や5個など複数用意して、それぞれ選択したものをテキストボックス1行に 続けて表示させたいです。 上記のプルダウンをA~Eまで用意した場合、[A b C D e]と表示させたり、Cは選ばず 空欄を選択した場合は、[A b D e]と表示させる事は可能でしょうか? また、テキストボックスにvalue="ZZ"と初期表示を入れて、その後に 続くように表示させたいです。 [ZZ A b C D e]とする事は可能でしょうか?

  • IEにおけるプルダウン、テキストボックスの限界値

    1つのHTMLにおいてプルダウンやテキストボックスを事実上いくつまで許されるのでしょうか? 試しに100個ほどプルダウンを書くと、まずファイルを開く時にかなり時間がかかり、画面のスクロールでもスクロールにプルダウンがついてこない感じで画面が崩れます。テキストボックスではプルダウンほどではないのですが、このようなオブジェクトの定義の限界値ってどれくらいなのでしょうか? わかりにくい質問でスミマセン。

    • ベストアンサー
    • HTML
  • ラジオボックス・チェックボックス・テキストボックス

    いつも拝見して勉強させていただいています。 勉強不足でうまくjavaがかけないので質問させていただきます。 下記のように機能させたいと考えています。 1.ラジオボックス1とラジオボックス2のみが初めは選択可能。  他のチェックボックス1~6とテキストボックスは選択不可能。 2.ラジオボックス2を選ぶとチェックボックス1~6が選択可能。テキストボックスは記入不可能。 3.チェックボックス6を選ぶとテキストボックスは記入可能。 配置は以下のような感じになっています。 ○ラジオボックス1 ○ラジオボックス2---               □チェックボックス1               □チェックボックス2               □チェックボックス3               □チェックボックス4               □チェックボックス5               □チェックボックス6-----                          「                             テキストボックス   」 下記サイトを参考にしているのですが組み合わせるとうまくできません。 http://phpjavascriptroom.com/?t=js&p=radiocheckbox 初歩的な質問で申し訳ありませんがよろしくおねがいします。

    • ベストアンサー
    • Java
  • 2つのプルダウンボックスの連動について

    <SELECT><OPTION></OPTION></SELECT>タグで作るプルダウンボックスについて質問です。 AとBの二つのプルダウンボックスを設置し、Aで選択された項目に合わせて、Bの表示項目を変更させたいと思っています。 この2つのプルダウンボックスを連動させる方法について、JAVAスクリプトを使った方法を知りましたが、利用者がブラウザでJAVAを切っていた場合は正常に機能しないのでしょうか? 利用者がブラウザでJAVAを切っていた場合にも対応できる連動の方法があればぜひ教えてください。

    • ベストアンサー
    • HTML
  • パワーポイントにおけるテキストボックスの均等配置について

    はじめまして。 現在、仕事でパワーポイントを使うことが多いのですが、 ひとつのテキストボックスではなく、複数のテキストボックスを作成し、 それらを均等の間隔で配置させたい場合、どのような処置をすればよいのか、 お教えいただけますでしょうか。 初歩的な質問で申し訳ございませんが、よろしくお願いいたします。

  • ラジオボタンとテキストボックスとプルダウンの連動

    ※データベースで登録したデータが※ 画面上に表示されており、1件1件にラジオボタンがあります。 そのラジオボタンにチェックを入れると、 チェックが入っている1件のみのデータが、 (※ボタンを押さずに※)配置しているテキストボックスに反映されるようにしたいと考えています。 <JSP>------------------ 名前 : [テキストボックス] 住所 : [テキストボックス] 誕生日 : [プルダウン]年[プルダウン]月[プルダウン]日 『登録ボタン(submit)』 (←サーブレットを呼ぶ) ◆結果◆ (上記に入力したデータが、データベースに登録され、そのデータが全件出力されている↓) (<table>のイメージ)   名前 住所  誕生日 ○ AAA 福岡県 1989/12/24 ○ BBB 東京都 1999/11/1 ○ CCC 北海道 1980/1/2 ↑ ラジオボタン ○ AAA 福岡県 1989/12/24 ↑がチェックされたとする。 JSP上部の[テキストボックス]にそれぞれのデータが入る。(↓イメージ) 名前 : [AAA] 住所 : [福岡県] 誕生日 : [1989]年[12]月[24]日 『登録ボタン』 どなたかご教授お願いいたします。

  • エクセル2007のテキストボックスについて初歩的な質問です。

    エクセル2007のテキストボックスについて初歩的な質問です。 適当に作成したテキストボックスを使って、テキストボックスの初期設定をしました。そして右クリックで規定に設定しました。 一旦エクセルを閉じて、再度エクセルを起動しテキストボックスを作成すると先ほど設定した規定値ではなく、設定する前の設定になってしまいます。 いつ作成しても初期設定した設定で使いたいのですが、できないのでしょうか?

  • ワード テキストボックスの揃え方 【初心者です・・

    ワードで顔写真とコメントを数人分載せたチラシを作成予定 今回初めてワードをさわる初心者です □ □ □←顔写真 □ □ □←各人のコメント(縦書きボックス) で、なんとなく形になったのですが、写真とテキストボックスの下を揃えて整列する方法が分かりません・・手動で揃えているのでガタガタです 初歩的な質問で申し訳有りません どなたか教えて下さい・・。

  • テキストボックスとオートシェイプにテキストを追加

    初歩的なことで申し訳ないのですが.... テキストボックスと、オートシェイプ(四角)にテキストを追加した状態って、どちらがどう、なにがどう違うのでしょうか?

  • VBAのテキストボックスについて

    VBAのテキストボックスについて質問させてください。 テキストボックス内の文字列をハイパーリンクにする事は可能でしょうか? 具体的にはテキストボックス内のURLをクリックすると ブラウザが立ち上がり、URLのサイトにアクセスすると言ったものです。 すごく平凡なんですけど、方法が見つからなかったのもで・・・。 どなたかご教授お願いします。

専門家に質問してみよう