Javascript日期返回错误的值

Javascript date returning wrong value

本文关键字:错误 返回 日期 Javascript      更新时间:2023-09-26

我是Java脚本的新手,在这里简直是撕我的头发。我想要一个简单的日期计算器,当用户从下拉菜单更改日期框或持续时间时,它会自动更新。我已经研究了几种方法,并找到了一种看起来相当简单的方法,如下所示。

如果我有'var interval = 4;'作为固定值(interval是用户输入日期后的持续时间),它可以完美地工作。但是,如果我将这一行更改为"var interval = number;"(从选择菜单输入的持续时间),它会给我各种疯狂的日期(日期明显在间隔之后),我不知道为什么

有人能帮忙吗?提前感谢

<script type="text/javascript">
function setExpDate(){
var formDate = document.getElementById('startDate').value;
var number = document.getElementById('days').value;
// set number of days to add
var interval = 4;
var startDate = new Date(Date.parse(formDate));
var expDate = startDate;
expDate.setDate(startDate.getDate() + interval);
document.getElementById('total').innerHTML = expDate;
document.getElementById('daysdays').innerHTML = interval;
};
</script>
</head>
<body>
<input type="text" size="10" maxlength="10" id="startDate" name="startDate" onblur="setExpDate(this.value)">
<select name="days" id="days" onchange="setExpDate(this.value)">
<option value="01">1</option>
<option value="02">2</option>
<option value="03">3</option>
<option value="04">4</option>
<option value="05">5</option>
<option value="06">6</option>
<option value="07">7</option>

 <div id="total"></div> <br/><div id="daysdays"></div>
</body>
</html>

表单字段的值总是字符串。你必须强制它们为数字:

var number = +document.getElementById('days').value;

var number = parseInt( document.getElementById('days').value, 10 );

(两者都可以;由你决定。

如果您不执行该转换,那么这里的附加步骤:

    expDate.setDate(startDate.getDate() + interval);

将作为字符串连接执行。