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

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

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

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

解決済

プルダウンの値が選ぶ度に増えてしまう

R.lawliet
R.lawliet

総合スコア0

JavaScript

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

1回答

0評価

0クリップ

4310閲覧

投稿2015/05/27 02:33

連動のプルダウンを作っています。

うるう対応、現在から17~40年前の日付を選択
選択初期は一番小さな値。

大体出来たのですが、動作チェックで問題が1つ。

年を選ぶ度に月が増え、
月を選ぶ度に日が増えていきます。

つまり日付を例にすると、

lang

1 2 3 ~ 31 1 2 ~ 31

という具合に。

どこかで値を初期化すれば良いのだと思うんですけど、
どのタイミングでどうやって初期化するのか、という点がわかりません。

ご指導頂けると幸いです。

lang

<!DOCTYPE html> <html> <head> <title>無題 1</title> </head> <body> <!-------- 選択フォーム --------> <form name="registration"> <select name="selectYear" id="selectYear" onchange="setSelectMonth()"></select> 年 <select name="selectMonth" id="selectMonth" onchange="setSelectDate()"></select> 月 <select name="selectDate" id="selectDate"></select> 日 </form>

lang

<script type="text/javascript"> /*====[ 現日付を取得 ]====*/ var Now = new Date(); var NowYear = Now.getFullYear(); /*====[ 関数 : オプションを更新(年) ]====*/ function setSelectYear(){ for(var y=NowYear-40; y<NowYear-17; y++){ var selectElement = document.getElementById("selectYear");//selectボックスIDからElementの取得 var option = document.createElement("option");//<option>要素を追加 option.value = y;//optionのvalue属性を設定 option.text = y;//リストに表示するテキストの設定 selectElement.appendChild(option);//セレクトボックスにオプションを追加 } setSelectMonth(); } setSelectYear(); /*====[ 関数 : オプションを更新(月) ]====*/ function setSelectMonth(){ for(var m=1; m<=12; m++){ var selectElement = document.getElementById("selectMonth"); var option = document.createElement("option"); option.value = m; option.text = m; selectElement.appendChild(option); } setSelectDate(); } /*====[ 関数 : オプションを更新(日) ]====*/ function setSelectDate(){ //選択された年を取得 var Year = document.registration.selectYear.options[ document.registration.selectYear.selectedIndex ].value; //選択された月を取得 var Month = document.registration.selectMonth.options[ document.registration.selectMonth.selectedIndex ].value; var lastDate = new Date(Year,Month,0).getDate(); for(var d=1; d<=lastDate; d++){ var selectElement = document.getElementById("selectDate"); var option = document.createElement("option"); option.value = d; option.text = d; selectElement.appendChild(option); } } </script> </body> </html>

※一緒のページに書いてるので/bodyと/htmlはscriptのところにあります。

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

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

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

JavaScript

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