Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/450.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript天/月/年格式_Javascript_Date - Fatal编程技术网

Javascript天/月/年格式

Javascript天/月/年格式,javascript,date,Javascript,Date,我正在尝试在表单中自动选择月、日和年。我相信这很简单,但我对Javascript非常不熟悉。在下面的代码中,月份选择工作正常,但日期始终是实际日期的+1,并且年份根本不工作。如果有人能帮忙,我们将不胜感激!谢谢 <form name="form" action="b.html" method="post"> <select id="month" name="month"> <option id="1" value="January">J

我正在尝试在表单中自动选择月、日和年。我相信这很简单,但我对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>

一月
二月
前进
四月
也许
六月
七月
八月
九月
十月
十一月
十二月
/
1.
2.
3.
4.
5.
6.
7.
8.
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
/
2012
2013
2014
2015
2016
2017
2018
2019
2020
var d=新日期();
var month=d.getMonth();
var day=d.getDate();
var year=d.getFullYear();
document.form.month[月]。所选=月;
document.form.day[天]。所选日期=天;
document.form.year[年]。所选=年;

您的ID发生冲突!ID是页面上的单数值。Selected是一个布尔值,您将其设置为一个数字

除掉身份证

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;
此代码:

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

var day = d.getDate()-1;
...
document.form.year[year - 2012].selected = true;
日期必须减去1,因为这部分:
document.form.day[day]
是一个数组,请记住数组是从0开始的,但是
getDate()
是从1开始的


为什么你不需要在月份部分减去1?因为

您正试图通过元素各自的索引访问元素。当您访问月份时,它会显示正确的月份,这是巧合,因为
getMonth()
返回一月的
0
。当您选择第三个月(index=2)时,它正确地选择了带有
index=2
的三月作为元素

对于日期和年份,我将您的代码改为
.value
。您不能对月份执行此操作,因为您使用的值是一月、二月、三月等,而不是它们的指数

<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>

var d=新日期();
var month=d.getMonth();
var day=d.getDate();
var year=d.getFullYear();
document.form.month.options[month].selected=true;
document.form.day.value=天;
document.form.year.value=年份;

选择元素中的选项由从[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是不好的做法。对于元素,它应该是唯一的。​​​​​​​​​​

在此处查看我的工作解决方案:


你的代码有什么问题?“不工作”从来都不是一个足够的问题描述。我从来都不喜欢使用
select
进行日期管理。允许像2月31日这样的日期是很容易的。我想如果你真的看一看你使用的是什么值,你就能很快找到它。请记住,
select
是一个数组,因此第一个元素的索引值为0。另外,在您有9个选项的年份,请查看您用于从数组中选择的值。@Matt,您从rationalboss中选择的答案有一个bug。你会发现日历什么时候会滚动到一月份。为什么你要将布尔值设置为一个数字?我想这将有助于解释为什么你需要减去1。当您试图调整索引偏移量时,代码会使返回的日期看起来不正确。通过这种方式,@epascarello的回答让问题变得更加清晰。感谢你和所有回答这个问题的人!这个选择的答案是错误的,它将布尔值设置为一个数字。一月份会发生什么?它失败了-1我应该提到,上述代码基于选项的零索引工作。月份是以零为基础的,所以我们不需要减去一。需要从一天中减去一,使之以零为基础。最后,减去第一年可能会使该年以零为基础。
document.form.month[month].selected = true;
document.form.day.value             = day;
document.form.year.value            = year;