ホームページ作成初心者です。
HP上に選択ボタンを出して数十人の人名を選択できるようにしたいのです。そのページのソースに選択肢を直に羅列させればできるのは知っているのですが、その選択肢リスト(人名)が割りと変動しやすく、また、複数のページで使用したいリストである場合、一つのファイルにリストを書いて、それだけを管理すれば変更が楽になると思うのです。可能でしょうか?ちなみにその選択を実行するのはHPの更新者だけで、HPを見る側がそれをいじる必要はないのですが、毎回人名を打ち込むのが手間なのでなんとかできないかと思うのです。どなたか教えていただけると助かります。
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];
}
}
***************************************
ご解答ありがとうございました。しばらくこの質問上の仕事から遠ざかっていました。まだ完全に解決してはいないのですが、大変参考になりました。ありがとうございました。
No.5
- 回答日時:
HTMLの方、記述間違えてました。
<script type="text/javascript" src="test2.js">
↓
<script type="text/javascript" src="jinmei.js">
ありがとうございます。
ただいまNo.2のやり方でトライしているところでした。形としてはまさに私のやりたかったことができたのですが、
1.セルのなかにformを入れると選択リストのレイアウトがおかしくなる。
2.選択してみるとエラーがでる。
3.欲張って、人名に加えて部署名も外部から選択できるかな?と思い部署リストのjsファイルを作ったら全然駄目だった。
といったことが発生し、spnk55様の記述の読解格闘中でした。私の挿入位置が多分違うのだと思います。勉強中なもので・・・。No.4も試してみます。
重ね重ねありがとうございます。また結果を追加させていただきます。
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ファイルの方をいじる必要はありません。
また複数の人名を選択して、隣のテキストエリアに表示できるようにしてみました。
ご参考になりますやら・・・(汗)
No.3
- 回答日時:
そのホームページを置いているサーバはどの程度自由に扱えますか?
プロバイダでしたら、OSやhttpサーバソフトは何か、またcgi,ssiは使用可能か、などの前提条件をご提示ください。
私が作成しているのは、会社のHPで社内の人間だけがみるための部分です(社内連絡的な)。会社のWEBサーバに送っているのですが、それ以上の詳しいことは管理者に聞かないと分かりません。今日は不在のようで、shige_70様のご質問には私の知識では答えられません。明日以降に補足をさせていただきます。よろしくお願いします。
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以外のブラウザでは正常に動作しないかもしれません(汗)
もっとよい方法があると思いますし、また趣旨と違っているかもしれませんので、
あくまで参考ということで・・・(汗)
No.1
- 回答日時:
HTMLだけでは、不可能ではないかと思います。
まず、『一つのファイルにリストを書いて』は、外部JAvaScriptなどで、変数などで、書き込めばいいと思います。配列などに書けばよいと思います。
また、自身でも操作したくない。
『毎回人名を打ち込むのが手間なのでなんとかできないかと思うのです』については、新規作成ボタンが欲しいということでしょうか?
こうなると、CGIやASPといった、ちょっと難しいプログラムが必要になるのではないかと。。。
回答ありがとうございます。
やはりジャバ等が必要なんですね。
人名を打ち込むのが手間、というのは決まった欄に人名を表示させるにあたって打ち込まずに選択ボタンから表示をしたい、という意味です。質問内容が伝わりにくいのでは、と自分でも思いながらの投稿でしたので・・・すみません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) コンボボックス及びリストボックスを5段階連動させる方法をご存知の方ご教授頂きたいです。 Excelで 3 2022/04/03 21:43
- Visual Basic(VBA) VBAで早押しゲームを作りたい 4 2022/05/12 13:46
- Excel(エクセル) Excelで質問です。 詳細(写真) ①黄色の部分を全てプルダウンを設定する。 ②リストはG列 ③リ 1 2023/06/16 21:54
- 年賀状作成・はがき作成 エクセルで作った住所録をワードの差し込み印刷ではがきに印刷したい 3 2022/09/26 15:47
- Visual Basic(VBA) VBA 参照先で選んだファイルをコピーし、出力先に別名で保存したい 8 2022/05/13 20:37
- iPhone(アイフォーン) アイフォン不便なので何とかしたい 3 2023/01/21 19:33
- ゲーム 桃鉄のカードについてです 例えば星飛びカードなどは、選択してから「やめる」ボタンがあるので行き場所の 2 2022/09/01 16:00
- 画像編集・動画編集・音楽編集 Windowsに付属しているビデオエディター。BGMを追加する方法は? 1 2022/06/26 08:54
- Excel(エクセル) マクロでボタンにつける名前がどこに設定されているかわからないケースがありました。 1 2023/06/19 19:37
- その他(パソコン・スマホ・電化製品) エクセル初心者です。 仕事でエクセルを使っていて、普段は素人でもできる簡単な関数を使ったことがある程 1 2022/05/25 11:17
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ラジオボタンが両方とも選択で...
-
HTML プルダウンメニューの選択...
-
↓の質問:テキストではなく、セ...
-
wordの数式について 定積分を書...
-
SUN BBSの改造方法
-
pythonのnumpyでの列(縦)ベク...
-
vsftpd+sslでアップロードできない
-
Javascriptの変数をCGIに送る方法
-
perlで書いたcgiでsqliteの使い...
-
Webアプリケーションを作りたい!
-
WEBページを強制的に横画面で見...
-
『数字の3桁毎にカンマを付け...
-
HTMLからCGIへデータを引き継ぎ
-
チェックボックスで選択した内...
-
標準入力からデータが読込めない
-
VBで表示したホームページの...
-
open.window(javascript) を使...
-
CGI実行できない。ソースが表示...
-
CGI
-
htmlからパラメータで、cgiに渡...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ラジオボタンが両方とも選択で...
-
select値をhiddenのvalueに渡し...
-
「value」に2つの値をセットす...
-
INPUT TYPE
-
FORMのselectの選択肢を最初か...
-
チェックボックスとセレクトボ...
-
チェックボックスグループの一...
-
ラジオボタンを選択済みにする...
-
<select>タグの幅設定
-
OPTIONタグにループは使えない...
-
iframeごとに戻るボタンを
-
メールフォームのプルダウンメ...
-
リストボックス(multipleなsel...
-
selectboxの画面遷移で、postデ...
-
プルダウンメニューでValue値を...
-
htmlでセルの値を取得して計算...
-
チェックボックスの余白を指定...
-
一つの検索窓で複数のサイトか...
-
ラジオボタンとセレクトメニュ...
-
コンボ1の内容に応じてコンボ...
おすすめ情報