我是Java脚本的新手,我真的在这里撕扯我的头发。我想要一个简单的日期计算器,当用户从下拉菜单中更改日期框或持续时间时,它会自动更新。我已经看了几种方法,并且已经找到了一个看起来非常简单的方法,如下所示。
如果我有'var interval = 4;'它可以完美地工作作为固定值(间隔是用户输入日期后的持续时间)。但是,如果我将该行更改为'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>
答案 0 :(得分:0)
表单字段的值始终是字符串。你必须强迫他们成为数字:
var number = +document.getElementById('days').value;
或
var number = parseInt( document.getElementById('days').value, 10 );
(任何一个都可以工作;这取决于你。)
如果您不执行该转换,则在此处添加步骤:
expDate.setDate(startDate.getDate() + interval);
将以字符串连接方式执行。