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

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

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

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

HTML

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

Q&A

解決済

1回答

6604閲覧

SELECT タグの初期値設定について

退会済みユーザー

退会済みユーザー

総合スコア0

JavaScript

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

HTML

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

0グッド

0クリップ

投稿2017/04/05 17:50

【HTML】

<form name="reserve"> <select name="stage" onChange="changeform()"> <option value="">お申込み日時</option> <option value="4月21日(金) ">4月21日(金) </option> <option value="4月22日(土) ">4月22日(土) </option> </select> <select name="count" id="sheets"> <option value="">チケット枚数</option> </select> </form>

【Javascript】

function changeform() {
doc = document.reserve.count;
if (document.reserve.stage.value == "4月21日(金)") {
doc.length = 4;
doc.options[0].text = "チケット枚数";
doc.options[1].text = "1枚";
doc.options[1].value = 1;
doc.options[2].text = "2枚";
doc.options[2].value = 2;
doc.options[3].text = "3枚";
doc.options[3].value = 3;
} else if (document.reserve.stage.value == "4月22日(土) ") {
doc.length = 3;
doc.options[0].text = "チケット枚数";
doc.options[1].text = "1枚";
doc.options[1].value = 1;
doc.options[2].text = "2枚";
doc.options[2].value = 2;
} else {
doc.length = 1;
doc.options[0].text = "チケット枚数";
}
}

以上の HTML と JavaScript で、「申し込み日時」を選択後に、「チケット枚数」の値が変更できたのですが、HTML であらかじめ申し込み日時のプルダウンメニューを選択済みにしたいページがあり以下のように記述するとチケット枚数の取得がうまくいきません。

【HTML】

<option value="4月22日(土) " selected>4月22日(土) </option>

申し込み日時のプルダウンメニューを上記のように選択済みにした場合に、

<option value="">チケット枚数</option> の値が選べなくなります。 申し込み日時を再度違うものを選択した後に、selected を設定したものを選択し直すとチケット枚数は正常に読み込まれます。

たくさんの日程と、それぞれ申し込み上限の枚数が異なるのでこの方法をとったのですが、
あらかじめ日時を選択済みにした状態で、チケット枚数を取得できる方法はありませんか。

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

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

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

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

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

kei344

2017/04/05 18:27

質問文のコードはそれぞれコードブロックで囲んでいただけませんか? ```(バッククオート3つ)で囲み、前後に改行をいれるか、コードを選択して「<code>」ボタンを押すとコードブロックになります。
guest

回答1

0

ベストアンサー

DOMが読み込まれた時点で一度changeform関数を呼び出せば良いと思いますが、いかがでしょうか?

HTML

1<!DOCTYPE html> 2<html lang="ja"> 3<head> 4 <meta charset="utf-8"> 5 <title>タイトル</title> 6 <style type="text/css"> 7 * { 8 margin: 0; 9 padding: 0; 10 } 11 </style> 12</head> 13<body> 14<form name="reserve"> 15 <select name="stage" onChange="changeform()"> 16 <option value="">お申込み日時</option> 17 <option value="4月21日(金)" selected>4月21日(金)</option> 18 <option value="4月22日(土)">4月22日(土)</option> 19 </select> 20 <select name="count" id="sheets"> 21 <option value="">チケット枚数</option> 22 </select> 23</form> 24<script> 25 function changeform(stage = document.reserve.stage.value) { 26 doc = document.reserve.count; 27 console.log(stage); 28 if (stage === "4月21日(金)") { 29 doc.length = 4; 30 doc.options[0].text = "チケット枚数"; 31 doc.options[1].text = "1枚"; 32 doc.options[1].value = 1; 33 doc.options[2].text = "2枚"; 34 doc.options[2].value = 2; 35 doc.options[3].text = "3枚"; 36 doc.options[3].value = 3; 37 } else if (stage === "4月22日(土)") { 38 doc.length = 3; 39 doc.options[0].text = "チケット枚数"; 40 doc.options[1].text = "1枚"; 41 doc.options[1].value = 1; 42 doc.options[2].text = "2枚"; 43 doc.options[2].value = 2; 44 } else { 45 doc.length = 1; 46 doc.options[0].text = "チケット枚数"; 47 } 48 } 49 50 document.addEventListener("DOMContentLoaded", function () { 51 changeform(document.forms[0].querySelector("select[name='stage']").options[document.forms[0].querySelector("select[name='stage']").selectedIndex].value) 52 }); 53</script> 54</body> 55</html>

投稿2017/04/05 18:09

s8_chu

総合スコア14731

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問