セレクトボックスを付属画像のように表示したいのですが、何故かセレクト ボックス内の文字が空(から)で表示されてしまいます。 今まではきちんと表示されていたのですが、原因はなんでしょうか?

画像

JavaScript | PHP105閲覧xmlns="http://www.w3.org/2000/svg">25

ベストアンサー

1

1人がナイス!しています

解答ありがとうございます。 let val = sessionStorage.getItem('plan'); if (val !== null) plan.value = val; で確かに、セレクトボックスの中に文字が表示されました。しかし、JavaScriptが起動しなくなってしまいphpしか起動しなくなってしまいます。 両方起動したいのですが、できないのでしょうか?

ThanksImg質問者からのお礼コメント

ありがとうございました。上記のコードで解決出来ました。感謝致します。

お礼日時:2021/12/7 20:26

その他の回答(1件)

1

> 今まではきちんと表示されていたのですが、原因はなんでしょうか? 動いていた状態から何かを変更しましたよね? その結果、上手く動作しなくなったのだと予想します。 Sessionに記録された内容で selectedを付加しようとしているのはここ > <option value="事業内容について" <?php if(isset($plan) && $plan==="事業内容について" ) { echo "selected" ;} ?>>事業内容について > </option> ここで $planの有無を確認してから使っているのは良い事だけど、$planがセットされるのは POSTの時 > $plan = filter_input(INPUT_POST, 'plan'); __その後 $plan = htmlspecialchars($plan, ENT_QUOTES); __としているのは意味不明 __だって htmlspecialchars()を通した後の値を __$_SESSION['plan'] = $plan; Sessionにセットしているので __htmlspecialchars()は HTMLとしてブラウザに表示する際に __必要なエスケープでそれ以外に使うのは不適 isset($_GET['action']) && $_GET['action'] === 'edit' の時 > $plan = isset($_SESSION['plan']) ? $_SESSION['plan'] : ''; つまり、GETの時にクエリ action=edit が付いていないと $planは未定義なので、Sessionに記録されていても選択済みになりません。 「上手く動いていた」時はクエリが付いていたけど、その事を忘れてクエリ無しでアクセスして「上手く動かない」という事は無いですか? または、action=edit が付いている時に何かやろうとして、それ以外のアクセスがあり得る事を忘れたとか? 質問者さんが本当にやりたかった事が良く解りませんが、最初に書いた様にSessionが有効な間は常にオプションが選択済みである様にしたいのなら、 > $plan = isset($_SESSION['plan']) ? $_SESSION['plan'] : ''; をその直前の if(isset(... の外出せば良いでしょう。 __Sessionを確かめてセットしているのだから __特定の条件下でやる必要は無さそう そして、その部分は PHPだけで問題無く出来るので JavaScriptでわざわざ sessionStorageを操作する必要性が無さそうに思いますけどねぇ? まぁ、質問文に書いていない必要性があってやっているんでしょうけど。

1人がナイス!しています