質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

1回答

4486閲覧

JavascriptでselectedIndexをセットした際に表示が変わらない

entaro12345

総合スコア75

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2021/06/26 14:10

編集2021/06/27 00:04

前提・実現したいこと

selectタグが複数あり、変更した際(onChange時)に、
Javascriptで別のselectタグのselectedIndexを初期化(0をセット)したいのですが、
表示が変わらなくて困っております。
助言いただけますと幸いです。
※selectedIndexのセットは動作している?ようですが表示が変わらないです。
→変更した対象のプルダウンをクリックするとカーソルは最上部(index=0)にフォーカスしています。

2021.06.27 追記
仕様説明が不足しておりましたので、追記いたします。

<li>タグで分けている2つのselectがグループとなります。 片方を変更したらもう片方を初期化したいです。 例)  selNm1を変更したらselNm2をselectedIndex=0  selNm2を変更したらselNm1をselectedIndex=0 としたいです  ※selNm3,4についても同様になります

2021.06.27 追記②
実際の画像(Firefox)

該当のソースコード

HTML

1<form name="sel_form"> 2<ul> 3 <li class="select"><h3>テスト①</h3> 4 <select id="sel1" name="selNm1" onChange="resetSelect('0')"> 5 <option value="0">選択して下さい</option> 6 <option value="1">佐藤</option> 7 <option value="2">田中</option> 8 </select> 9 <select id="sel2" name="selNm2" onChange="resetSelect('1')"> 10 <option value="0">選択して下さい</option> 11 <option value="1">さとう</option> 12 <option value="2">たなか</option> 13 </select> 14 </li> 15 <li class="select"><h3>テスト②</h3> 16 <select id="sel3" name="selNm3" onChange="resetSelect('2')"> 17 <option value="0">選択して下さい</option> 18 <option value="1">SATOU</option> 19 <option value="2">TANAKA</option> 20 </select> 21 <select id="sel4" name="selNm4" onChange="resetSelect('3')"> 22 <option value="0">選択して下さい</option> 23 <option value="1">satou</option> 24 <option value="2">tanaka</option> 25 </select> 26 </li> 27</ul> 28</form>

Javascript

1function resetSelect(target){ 2 if (target == "0") { 3 document.sel_form.selNm1.selectedIndex = 0; 4 } else if (target == "1") { 5 document.sel_form.selNm2.selectedIndex = 0; 6 } else if (target == "2") { 7 document.sel_form.selNm3.selectedIndex = 0; 8 } else if (target == "3") { 9 document.sel_form.selNm4.selectedIndex = 0; 10 } 11}

試したこと

querySelectorを使用してidからエレメントを取得してselectedIndexをセットしましたがNGでした。

補足情報(FW/ツールのバージョンなど)

HTML5
ブラウザ:Edge/Chrome/Firefox

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yh1224

2021/06/26 14:32

option はすべて 0 のみなので選択できないんですが、ソースは省略されたものでしょうか? また、このソースだと「変更した select タグの selectedIndex を 0 に」している気がします。
entaro12345

2021/06/26 14:35

失礼しました。 実際は、大量にデータがあります(各selectタグに20個程度) 追記いたしました。
int32_t

2021/06/26 14:44

質問文のコードだとselNm1からselNm4にはoptionが1つしかないので、selectedIndex=0しても表示は変わりようがないように思えます。
kei344

2021/06/26 14:46 編集

option が1つしかないので変わりようが有りませんが、例示のためのものだとすれば、書かれている状況が再現するコードを提示されたほうが回答を得やすいと思います。追記:編集前のものを見ていました、すみません
YT0014

2021/06/28 16:57

追加いただいた画面写真ですが、どの状態の、どのselectに該当するものなのでしょうか?
entaro12345

2021/06/29 04:25

質問ありがとうございます。 id="sel2"を変更した際のid="sel1"のキャプチャになります。
YT0014

2021/06/29 08:49

追加いただいた画面写真ですが、id="sel2"を変更した際のid="sel1"のキャプチャでしたら、仕様通りの挙動ではないでしょうか? 正しい状態の例示ですか?誤っている状態の例示ですか? この質問文以外の情報がない者が見て、理解できるように、情報をご提示ください。
guest

回答1

0

HTML

1 <select id="sel1" name="selNm1" onChange="resetSelect('0')"> 2 <option value="0">選択して下さい</option> 3 <option value="1">佐藤</option> 4 <option value="2">田中</option> 5 </select>

selNm1が変更された時に呼び出されるのは、resetSelect('0')です。
この時、該当メソッドでは、

JavaScript!

1 if (target == "0") { 2 document.sel_form.selNm1.selectedIndex = 0; 3 } else if (target == "1") {

が実行されるので、selNm1が、「選択してください」となりますが、それ以外のselectタグに対しては、何も処理していません。
当然、別のselectタグは変更されません。

修正:ペア単位で、一方を選択した場合、他方を「選択して下さい」にしたいとのことなので。
yh1224さんにご提示頂いたように、以下のコードになるかと。

JavaScript

1 if (target == "0") { 2 document.sel_form.selNm2.selectedIndex = 0; 3 } 4 if (target == "1") { 5 document.sel_form.selNm1.selectedIndex = 0; 6 }

resetSelect()として作成するべきは、全selectに対して、targetに一致しない場合に、selectedIndexを0にするというメソッドです。

以下のコードは、ペア単位仕様判明前のものです。

JavaScript

1 if (target != "0") { 2 document.sel_form.selNm1.selectedIndex = 0; 3 } 4 if (target != "1") { 5 document.sel_form.selNm2.selectedIndex = 0; 6 }

ですが、この仕様を実装すると、4つのselectのうち、「選択してください」以外に設定できるのは、1つのselectだけになります。
これは、想定の仕様通りでしょうか?

投稿2021/06/26 15:00

編集2021/06/29 09:10
YT0014

総合スコア1708

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

entaro12345

2021/06/26 23:09

ご回答ありがとうございます。 また、説明が不足しており大変申し訳ございません。 追記いたしますが、<li>タグで分けている2つのselectがグループとなります。 例)  selNm1を変更したらselNm2をselectedIndex=0  selNm2を変更したらselNm1をselectedIndex=0 としたいです  ※selNm3,4についてもどうようになります
yh1224

2021/06/26 23:23

document.sel_form.selNm1.selectedIndex = 0; と document.sel_form.selNm2.selectedIndex = 0; を 入れ替えるだけではだめです?
YT0014

2021/06/26 23:50

例の場合、selNm1で「佐藤」を選択したらselNm2は「選択してください」から変更しない、という仕様で問題ないのですね? ご提示いただいた仕様だと、selNm1で「佐藤」を選択(selNm2初期化)後、selNm2で「さとう」を選択したら、selNm1は「選択してください」に戻るんですが。
entaro12345

2021/06/27 00:02

ありがとうございます。 仕様は仰るとおりで問題ございません。 たしかに、プルダウンを選択してみるとフォーカスは「選択してください」にあたっているように見えます。 →グレー色になってます。 しかし、表示(選択値)が「佐藤」のままになってしまいます。 ※実際の画面のキャプチャを貼らせていただきます(「佐藤」とかではございませんが。)
YT0014

2021/06/29 08:58 編集

entaro12345さんの記述された「フォーカス」とは何を意味しているのでしょうか? SelNm1が「選択してください」でSelNm2が「さとう」の状態で、SelNm1を「佐藤」に変更したら、SelNm1、SelNm2は、それぞれ、どうなってほしいのでしょうか? こちらで把握している仕様では、SelNm1は「佐藤」のまま、SelNm2が「選択してください」、マウスでの変更なら、フォーカスはSelNm1を維持が正しいのですが。 resetSelect()を、yh1224さんのご指摘の通りに変更した場合、FireFoxでは、上記のような動作になることを確認しております。
entaro12345

2021/06/29 05:11

返信が遅くなり申し訳ありません。 >SelNm1が「選択してください」でSelNm2が「さとう」の状態で、SelNm1を「佐藤」に変更したら SelNm1は「佐藤」、SelNm2は「選択してください」になってほしいです。。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問