1

フォームで月、日、年を自動選択できるようにしようとしています。これは非常に単純なことだと思いますが、私はJavascriptにまったく慣れていません。以下のコードでは、月の選択は正常に機能していますが、日は常に実際の日の+1であり、年はまったく機能していません。誰かが助けることができればそれは非常にありがたいです!ありがとう!

<form name="form" action="b.html" method="post">
    <select id="month" name="month">
        <option id="1" value="January">January</option>
        <option id="2" value="February">February</option>
        <option id="3" value="March">March</option>
        <option id="4" value="April">April</option>
        <option id="5" value="May">May</option>
        <option id="6" value="June">June</option>
        <option id="7" value="July">July</option>
        <option id="8" value="August">August</option>
        <option id="9" value="September">September</option>
        <option id="10" value="October">October</option>
        <option id="11" value="November">November</option>
        <option id="12" value="December">December</option>
    </select>
    /
    <select id="day" name="day">
        <option id="1" value="1">1</option>
        <option id="2" value="2">2</option>
        <option id="3" value="3">3</option>
        <option id="4" value="4">4</option>
        <option id="5" value="5">5</option>
        <option id="6" value="6">6</option>
        <option id="7" value="7">7</option>
        <option id="8" value="8">8</option>
        <option id="9" value="9">9</option>
        <option id="10" value="10">10</option>
        <option id="11" value="11">11</option>
        <option id="12" value="12">12</option>
        <option id="13" value="13">13</option>
        <option id="14" value="14">14</option>
        <option id="15" value="15">15</option>
        <option id="16" value="16">16</option>
        <option id="17" value="17">17</option>
        <option id="18" value="18">18</option>
        <option id="19" value="19">19</option>
        <option id="20" value="20">20</option>
        <option id="21" value="21">21</option>
        <option id="22" value="22">22</option>
        <option id="23" value="23">23</option>
        <option id="24" value="24">24</option>
        <option id="25" value="25">25</option>
        <option id="26" value="26">26</option>
        <option id="27" value="27">27</option>
        <option id="28" value="28">28</option>
        <option id="29" value="29">29</option>
        <option id="30" value="30">30</option>
        <option id="31" value="31">31</option>
    </select>
    /
    <select id="year" name="year">
        <option id="2012" value="2012">2012</option>
        <option id="2013" value="2013">2013</option>
        <option id="2014" value="2014">2014</option>
        <option id="2015" value="2015">2015</option>
        <option id="2016" value="2016">2016</option>
        <option id="2017" value="2013">2017</option>
        <option id="2018" value="2014">2018</option>
        <option id="2019" value="2015">2019</option>
        <option id="2020" value="2016">2020</option>
    </select>

    <script>
    var d = new Date();
    var month = d.getMonth();
    var day = d.getDate();
    var year = d.getFullYear();
    document.form.month[month].selected = month;
    document.form.day[day].selected = day;
    document.form.year[year].selected = year;
    </script>
</form>
4

5 に答える 5

1

衝突するIDがあります!idは、ページ上の特異値です。選択されたのはブール値であり、数値に設定しています。

IDを取り除き、

var d = new Date();
var month = d.getMonth();
var day = d.getDate();
var year = d.getFullYear();
document.form.month.options[month].selected = true;
document.form.day.options[day-1].selected = true;
document.form.year.options[year-2012].selected = true;
于 2013-03-11T18:01:25.503 に答える
1

このコード:

var day = d.getDate();
...
document.form.year[year].selected = true;

する必要があります

var day = d.getDate()-1;
...
document.form.year[year - 2012].selected = true;

この部分document.form.day[day]は配列であるため、日は1を引く必要があります。配列は0から開始されますが、getDate()は1から開始されることに注意してください。

月の部分で1を引く必要がないのはなぜですか?JavaScriptの日付オブジェクトの月のインデックスは0で始まるためです!

于 2013-03-11T18:03:21.943 に答える
0

select-elementのオプションは、[0]で始まるインデックスによってアクセスされます。

その結果:

document.form.month[0].value is 'January'
document.form.day[0].value is 1;
document.form.year[0].selected is 2012;

インデックスを正しく計算するか、アイテムの値をインデックスとして使用してください。

var year = d.getFullYear();
document.getElementById('year').value = year;

また、オプションから「id」属性を削除してください。ドキュメントに同じIDを2回含めることはお勧めできません。要素ごとに一意である必要があります。</p>

于 2013-03-11T18:08:47.870 に答える
0

ここで私の実用的なソリューションを参照してください:http://jsfiddle.net/powtac/gVWrz/7/

document.form.month[month].selected = true;
document.form.day.value             = day;
document.form.year.value            = year;
于 2013-03-11T18:14:43.153 に答える
-2

それぞれのインデックスを介して要素にアクセスしようとしています。getMonth()月にアクセスしたとき、1月に戻るため、正しい月が表示されるのは偶然の一致でした0。3か月目(index = 2)を選択すると、。の要素として3月が正しく選択されましたindex=2

日付と年については、.value代わりにコードをに変更しました。使用した値は1月、2月、3月などであり、それらのインデックスではないため、これを1か月間行うことはできません。

<script>
    var d = new Date();
    var month = d.getMonth();
    var day = d.getDate();
    var year = d.getFullYear();
    document.form.month.options[month].selected = true;
    document.form.day.value = day;
    document.form.year.value = year;
</script>
于 2013-03-11T18:08:25.603 に答える