• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:selectの初期値を設定したい)

JavaScriptを使用してセレクトボックスの初期値を設定したい

このQ&Aのポイント
  • JavaScriptを使用して、ページを開くとセレクトボックスの値が初期値になるようにする方法を教えてください。
  • 詳細を説明すると、セレクトボックスには担当者一覧があります。ログインしている担当者名が選択された状態になるようにしたいです。
  • ソースコードを書きましたがうまく動作しません。どうすれば初期状態から担当者が選ばれた状態になるでしょうか。

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

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

3点修正が必要 (1)load後の処理になるのでwindow.onloadで処理する (2)element.options[i]ではなくelement.options[i].value (3) 'tantou'ではなくtantou ざっと、こんな感じ <script> window.onload=function(){ var tantou = "山本 太郎"; var element = document.getElementById("sagyounm"); for (var i=0; i<element.options.length;i++) { if(element.options[i].value === tantou){ element.options[i].selected = true; break; }; }; } </script> <select name="sagyoutantou" id="sagyounm" required> <option value=""/>---作業担当者選択---</option> <option value="山本 太郎"/>山本 太郎</option> <option value="山下 清"/>山下 清</option> <option value="岡本 次郎"/>岡本 次郎</option>

taka78ube
質問者

お礼

回答ありがとうございます。 ご指摘どおり修正しましたところ、 問題なく動作いたしました。 ほんとうにありがとうございました。

その他の回答 (1)

  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.2

よくわかりませんが… >if(element.options[i] === 'tantou'){ ~~ だと'tanntou'という文字列と比較してしまっているので、多分、一致することはないでしょう。 変数tanntouの内容と比較するのでしょうから、  if(element.options[i] === tantou){ ~~ とすればうまくいくかも… あと、質問文からはわかりませんが、DOM構築後にスクリプトを実行するようになっていますよね? ところで、 >var tantou = "<%=Rs("作業担当者")%>" って、サーバーサイドで処理しているのでしょうから、わざわざクライアントサイドで選択する処理をしなくても、出力するときに担当者をselectedにしておくとか、あるいはセレクトタグなどでなく担当者は固定にしてしまうとかでもよさそうに思いますが…

taka78ube
質問者

お礼

回答ありがとうございました。 まだまだ初心者なので、「''」をつけるのかどうかわかっておりませんでした。 サーバーサイドとクライアントの処理がまだよくわかってませんので、中々難しいです。