• ベストアンサー

HP上の選択ボタンの選択肢リストを別ファイルから読んでほしい

ホームページ作成初心者です。 HP上に選択ボタンを出して数十人の人名を選択できるようにしたいのです。そのページのソースに選択肢を直に羅列させればできるのは知っているのですが、その選択肢リスト(人名)が割りと変動しやすく、また、複数のページで使用したいリストである場合、一つのファイルにリストを書いて、それだけを管理すれば変更が楽になると思うのです。可能でしょうか?ちなみにその選択を実行するのはHPの更新者だけで、HPを見る側がそれをいじる必要はないのですが、毎回人名を打ち込むのが手間なのでなんとかできないかと思うのです。どなたか教えていただけると助かります。

  • HTML
  • 回答数6
  • ありがとう数4

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

  • ベストアンサー
  • spnk55
  • ベストアンサー率29% (11/37)
回答No.6

前回のJavaScriptの記述では、階層順に場所を指定していたので、 (document→form→textareaというふうに) 表のセル内とか、別の場所に移動してしまうと、その階層順が変わってしまい、 データが参照できなくなってエラーが出てしまうんです。 今回、階層順に指定するのではなくて、直接名前を指定するように変更してみましたので、 別の場所に移動しても大丈夫(なはず!?)です。 それと、新たに部署ファイルを作成しようとすれば、 部署用に新たにJavaScriptの関数を定義し直す必要があり、 .jsファイルの使い回しができないんですね・・・ 以下は記述のあとで、HP作成ソフトを使って表内に収め、整形してみました。 はっきり言ってだらだら長くて、決してエレガントな記述でありません(汗) ちなみにCLICKボタンをクリックすると データをアラート表示させるようにしていますが、 これをサーバーへ送るように設定するとなるとCGIが絡んでくるので、 その場合は、管理者の方に相談してみてください。 HTMLファイル *************************************** <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <title></title> <script type="text/javascript" src="jinmei.js"> </script> <script type="text/javascript" src="busyo.js"> </script> <script type="text/javascript"> <!-- a=""; function FUNC2(){ b=document.getElementById("select1").value; a+=b; a+="\n"; document.getElementById("textarea1").value=a; } function FUNC3(){ alert(a); } function FUNC4(){ a=""; document.getElementById("textarea1").value=""; } //--> </script> <script type="text/javascript"> <!-- aa=""; function FUNC5(){ b=document.getElementById("select2").value; aa+=b; aa+="\n"; document.getElementById("textarea2").value=aa; } function FUNC6(){ alert(aa); } function FUNC7(){ aa=""; document.getElementById("textarea2").value=""; } //--> </script> </head> <body onLoad="FUNC(),FUNC1()"> <form> <table> <TBODY><TR><TD></TD><TD></TD></TR> <TR><TD valign="top"> <select id="select2" onChange="FUNC5()"> <option>部署名を選択してください </select></TD> <TD><textarea id="textarea2" cols="15" rows="5"> </textarea></TD></TR><TR><TD></TD> <TD align="center"> <input type="button" value="CLICK!" onClick="FUNC6()"> <input type="button" value="RESET" onClick="FUNC7()"> </TD></TR><TR><TD></TD><TD></TD></TR> <TR><TD valign="top"> <select id="select1" onChange="FUNC2()"> <option>人物名を選択してください </select></TD><TD> <textarea id="textarea1" cols="15" rows="5"> </textarea></TD></TR><TR><TD></TD> <TD align="center"> <input type="button" value="CLICK!" onClick="FUNC3()"> <input type="button" value="RESET" onClick="FUNC4()"> </TD></TR><TR><TD></TD><TD></TD></TR><TBODY> </TABLE> </form> </body> </html> *************************************** 外部ファイル1(jinmei.js) *************************************** jinmei=new Array(); jinmei[0]="aaa"; // ここに人名を入力 jinmei[1]="bbb"; // ここに人名を入力 jinmei[2]="ccc"; // ここに人名を入力 jinmei[3]="ddd"; jinmei[4]="eee"; function FUNC(){ x=new Array(); for(i=0;i<=jinmei.length-1;i++){ x[i]=document.createElement("option"); document.getElementById("select1").appendChild(x[i]); document.getElementById("select1").options[i+1].innerHTML=jinmei[i]; document.getElementById("select1").options[i+1].value=jinmei[i]; } } *************************************** 外部ファイル2(busyo.js) *************************************** busyo=new Array(); busyo[0]="11111"; // ここに部署を入力 busyo[1]="22222"; // ここに部署を入力 busyo[2]="33333"; // ここに部署を入力 busyo[3]="44444"; busyo[4]="55555"; function FUNC1(){ x=new Array(); for(i=0;i<=busyo.length-1;i++){ x[i]=document.createElement("option"); document.getElementById("select2").appendChild(x[i]); document.getElementById("select2").options[i+1].innerHTML=busyo[i]; document.getElementById("select2").options[i+1].value=busyo[i]; } } ***************************************

hena011
質問者

お礼

ご解答ありがとうございました。しばらくこの質問上の仕事から遠ざかっていました。まだ完全に解決してはいないのですが、大変参考になりました。ありがとうございました。

その他の回答 (5)

  • spnk55
  • ベストアンサー率29% (11/37)
回答No.5

HTMLの方、記述間違えてました。 <script type="text/javascript" src="test2.js">        ↓ <script type="text/javascript" src="jinmei.js">

hena011
質問者

お礼

ありがとうございます。 ただいまNo.2のやり方でトライしているところでした。形としてはまさに私のやりたかったことができたのですが、 1.セルのなかにformを入れると選択リストのレイアウトがおかしくなる。 2.選択してみるとエラーがでる。 3.欲張って、人名に加えて部署名も外部から選択できるかな?と思い部署リストのjsファイルを作ったら全然駄目だった。 といったことが発生し、spnk55様の記述の読解格闘中でした。私の挿入位置が多分違うのだと思います。勉強中なもので・・・。No.4も試してみます。 重ね重ねありがとうございます。また結果を追加させていただきます。

  • spnk55
  • ベストアンサー率29% (11/37)
回答No.4

#2です。 もっとよい方法がないか、あれこれ考えておりました( ̄~ ̄;) HTMLファイル **************************** <html> <head> <meta http-equiv="Content-Type" content="text/html;charset=shift_jis"> <title></title> <script type="text/javascript" src="test2.js"> </script> <script type="text/javascript"> <!-- a=""; function FUNC2(){ b=document.form1.select1.value; a+=b; a+="\n"; document.form1.textarea1.value=a; } function FUNC3(){ alert(a); } function FUNC4(){ a=""; document.form1.textarea1.value=""; } //--> </script> </head> <body onLoad="FUNC()"> <form name="form1"> <select name="select1" id="select2" onChange="FUNC2()"> <option>以下から選択してください </select> <textarea name="textarea1" cols="15" rows="5"> </textarea> <input type="button" value="CLICK!" onClick="FUNC3()"> <input type="button" value="RESET" onClick="FUNC4()"> </form> </body> </html> **************************** 外部ファイル(jinmei.js) **************************** jinmei=new Array(); jinmei[0]="aaa"; // ここに人名を入力 jinmei[1]="bbb"; // ここに人名を入力 jinmei[2]="ccc"; // ここに人名を入力 jinmei[3]="ddd"; jinmei[4]="eee"; function FUNC(){ x=new Array(); for(i=0;i<=jinmei.length-1;i++){ x[i]=document.createElement("option"); document.getElementById("select2").appendChild(x[i]); document.form1.select1.options[i+1].innerText=jinmei[i]; document.form1.select1.options[i+1].value=jinmei[i]; } } **************************** 上の例ですと、外部ファイルに jinmei[0]="人名"; jinmei[1]="人名"; jinmei[2]="人名"; jinmei[3]="人名"; jinmei[4]="人名";   ・   ・ という要領で追加していけばOKで、 HTMLファイルの方をいじる必要はありません。 また複数の人名を選択して、隣のテキストエリアに表示できるようにしてみました。 ご参考になりますやら・・・(汗)

  • shige_70
  • ベストアンサー率17% (168/946)
回答No.3

そのホームページを置いているサーバはどの程度自由に扱えますか? プロバイダでしたら、OSやhttpサーバソフトは何か、またcgi,ssiは使用可能か、などの前提条件をご提示ください。

hena011
質問者

お礼

私が作成しているのは、会社のHPで社内の人間だけがみるための部分です(社内連絡的な)。会社のWEBサーバに送っているのですが、それ以上の詳しいことは管理者に聞かないと分かりません。今日は不在のようで、shige_70様のご質問には私の知識では答えられません。明日以降に補足をさせていただきます。よろしくお願いします。

  • spnk55
  • ベストアンサー率29% (11/37)
回答No.2

プルダウンメニューの中から一人だけ選択するのであれば、 このようなスクリプトはどうでしょうか? HTMLファイル **************************** <html> <head> <meta http-equiv="Content-Type" content="text/html;charset=shift_jis"> <title>test</title> <script type="text/javascript" src="jinmei.js"> </script> <script type="text/javascript"> <!-- function FUNC2(){ document.form1.text1.value=document.form1.select1.value; } //--> </script> </head> <body onLoad="FUNC()"> <form name="form1"> <select name="select1" onChange="FUNC2()"> <option>以下から選択してください <option> <option> <option> // 必要な数だけ "option"を増やす </select> <input type="text" name="text1"> </form> </body> </html> **************************** 外部ファイル(jinmei.js) **************************** jinmei=new Array(); jinmei[0]="aaa"; // ←ここに人名を入力 jinmei[1]="bbb"; // ←ここに人名を入力 jinmei[2]="ccc"; // ←ここに人名を入力 function FUNC(){ for(i=0;i<=jinmei.length-1;i++){ document.form1.select1.options[i+1].innerText=jinmei[i]; document.form1.select1.options[i+1].value=jinmei[i]; } } **************************** 外部ファイル"jinmei.js"は、メモ帳などにコピーして、 拡張子を.jsに変更して、HTMLと同じフォルダ内に保存してください。 また、aaaやbbbの箇所を人名に置き換えてください。 それと、HTMLの方のoptionタグも、人数の増減に合わせて変更してください。 選択した人名をどう処理するのかがわかりませんが、 上の例では、プルダウンメニュー横のテキストボックス内に表示させるようにしています。 なお、IE以外のブラウザでは正常に動作しないかもしれません(汗) もっとよい方法があると思いますし、また趣旨と違っているかもしれませんので、 あくまで参考ということで・・・(汗)

  • akira212
  • ベストアンサー率24% (75/308)
回答No.1

HTMLだけでは、不可能ではないかと思います。 まず、『一つのファイルにリストを書いて』は、外部JAvaScriptなどで、変数などで、書き込めばいいと思います。配列などに書けばよいと思います。 また、自身でも操作したくない。 『毎回人名を打ち込むのが手間なのでなんとかできないかと思うのです』については、新規作成ボタンが欲しいということでしょうか? こうなると、CGIやASPといった、ちょっと難しいプログラムが必要になるのではないかと。。。

hena011
質問者

お礼

回答ありがとうございます。 やはりジャバ等が必要なんですね。 人名を打ち込むのが手間、というのは決まった欄に人名を表示させるにあたって打ち込まずに選択ボタンから表示をしたい、という意味です。質問内容が伝わりにくいのでは、と自分でも思いながらの投稿でしたので・・・すみません。

関連するQ&A

  • 動的な選択リストを取得する方法

    AJAXなどを使用していて、ある項目を選択するとその内容に応じて 下の選択リスト(ドロップダウン・リスト)が作成されるようになっているページについて、 そのリスト(一覧)自体を簡単に取得するする方法について知りたいです。 通常はソースを表示すれば簡単に取得できますが、動的な選択リストの場合、 最初からリストの中身が存在するわけではないため、ソースから取得することは 容易くありません。 SSLが使用されているため、etherealなどで拾うことも容易くありません。 手でうつす以外になにかよい方法はないでしょうか?

  • HPについて

    HPを作りましたが、 トップページのソースの中に言葉を入れると 検索で引っかかるようになり、より多くの人に見てもらえるとと聞きました。(お分かりでしょうか?) HPのトップページ自体には表示されずにです。リストは10までがいいとも聞きました。 これはどういったソースなのでしょうか? そしてこのソースを分かりやすく教えていただきたいのですが。。。 初心者なので優しく教えてくださるとうれしいです。 よろしくお願いします。

  • リストビューの項目の追加と選択されている項目

    ソースから動的にリストビューの項目の追加方法 またそのうち選択されているもの(複数選択は行わない)が変わった時に どの項目が選択されているか取得する方法の2つが知りたいのですが。 加えてコンボボックスの項目をソースから動的に追加する方法を教えていただけると嬉しいです。

  • エクセルでリスト選択できるようにしたのですが表示が空白からになってしまいます。。。

    エクセルでリスト選択できるようにしたのですが表示が 一番上の文字から出なく一番下の空白が最初に出てしまいます。 スクロールバーで上にすれば表示されますが 毎回スクロールバーを使うのが手間なので一番上の文字から 表示されるようにしたいです。 またリスト選択が8個までしか表示できずそれ以上は スクロールバーになってしまうのですが 表示をふやすことは出来ますでしょうか??><;

  • リストボックスで選択したデータを表示する方法

    ソフトはACCESS2000です。 フォームでの入力で、リストボックスから複数選択できるようにしているのですが、このリストボックスの値集合ソースに入っている件数が多いため、下にかなりスクロールすることになります。 そこで、リストボックスの右側に別にリストボックスで選択したものを表示させられないかと思っています。 ここでお聞きしたいのは、 1. 表示エリアとしてテキストボックスを作ったのですが、テキストボックスでOKか? 2. 1でOKの場合、リストボックスで選択したものをテキストボックスに表示させる方法 3. 1でOKの場合、そのテキストボックスへ入力できなくする方法(表示ONLYにしたい) 4. 1でだめな場合、別な方法はあるか?あればその方法 です。 回答は、1~3か、1,4になるかと思います。よろしくお願いいたします。

  • フレームなしHPを作るのは大変

    以前、Dreamweaver3でフレームなしHPを作った経験があります。そのソフトには複数ページの同一部分を更新する機能がついていたにも関わらず、更新を失敗し大変だった記憶があります。 だからといってページが変わるごとに複数ページ変えることも大変な気がします。 お手軽にフレームなしページを作る方法はあるのでしょうか?どんなHP作成ソフトがおすすめでしょうか?

  • HPが上手く更新されない。

    会社に3台のPCがあるのですが、 HPを更新してみると、 その内1台は更新後のページが表示され、 他2台は更新前のページが表示されています。 (更新後のページが表示されているのはホームページビルダーで更新を実行したPCです。) 何故でしょう? あまりPCに詳しくないので、 噛み砕いて教えていただけると助かります。 よろしくお願いします。

  • 多くのファイルを選択的に移動するとき、1つ1つ移動するのではなく、

    多くのファイルを選択的に移動するとき、1つ1つ移動するのではなく、 移動するファイルを選んでいき、最後にまとめて「移動」を実行するということはできないでしょうか? Ctrlキーで複数選んで移動ということが考えられますが、他のフォルダに移ると選択が消えてしまうので、 移動するリストを作って最後にその選んだファイルを移動するという方法があれば便利だと思います。 そのような方法があれば教えてもらいたいです。

  • プルダウンメニューを使ったHPを作りたい

    こんにちわ まだまだ勉強中の者です。 気にいった形のHPがあったので、この様なHPが作りたいと悪戦苦闘しております。 近いJavaScriptは見つけたのですが、どうも同じような物が出来なくて行き詰りました。 探しているのは、メニューのところにマウスを持っていくと、複数の選択が出来るようにするリンクです。 リストボックスではかわいくないので、リストボックス風にはしたくありません。 気に入ったHPのURLを掲載させていただきます。 http://www.sanko-seika.co.jp/index.php?My_Session=0dd6a54bcf74d1b3dfa93811767acbaf 上記のHPの様なプルダウンメニューを作るには、どの様なjavaScriptを使用すると良いのでしょうか? HP上のソースを見ても、よく分かりませんでした。 HPは基本的にホームページビルダーで作成しております。 お力をお貸しください。お願いします。

  • hp psc 2450

    hp psc 2450 というプリンタを購入したのですが、 印刷するとき、プリンタの選択画面で、 hp psc 2400 と表示されています。「HP ディレクタ」を開いたときも、デバイス選択のリストボックスにも hp psc 2400 series と出ています。必要なソフトは更新したのですがなぜでしょう。また、プリンタの設定で両面印刷を指定したり、2分割で印刷したり、WEBページを頭から印刷するに設定しても、後ろから印刷されてしまう等、せっていが全くもって反映されません。印刷最中に一時停止ボタン等があるウィンドウがでないのも不便です。どなたかアドバイスをお願いします。