【发布时间】:2020-07-22 22:02:36
【问题描述】:
情况:
我正在构建一个 Javascript 代码,它可以根据用户输入的开始时间(在输入字段中)和用户在下拉菜单中选择的时间间隔来计算结束时间。到目前为止,它可以自动获取输入域(“开始”)中输入的开始时间。即使用户输入了新的开始时间,也会同时更新。
问题:
它无法从下拉菜单中获取选定的间隔值,它只显示“NaN:NaN AM”。我试图将代码从
var timeChange = intervaltime.text;修改为var timeChange = intervaltime.options[intervaltime.selectedIndex].text;,但仍然没有成功。如何让它从“间隔”中获取选定的值?虽然将
intervaltime.text改为intervaltime.value可以显示结束时间,但计算出来的结束时间是完全错误的。更糟糕的是,当我不断输入新的开始时间时,新的结束时间是不合逻辑的。我不知道为什么它计算错误。
我可以知道我的代码有什么问题吗?谢谢!
链接(与以下代码相同): https://jsfiddle.net/TKPSSS/jxp9uybt/
代码
HTML:
<input name="start" id="start" type="text" onInput="Value()">
<select id="interval">
<option value="0">--Select start time--</option>
<option value="5">5</option>
<option value="10">10</option>
<option value="15">15</option>
<option value="20">20</option>
<option value="25">25</option>
<option value="30">30</option>
<option value="35">35</option>
<option value="40">40</option>
<option value="45">45</option>
<option value="50">50</option>
<option value="55">55</option>
<option value="60">60</option>
</select>
<br />
<h1 id="showstart"></h1>
<h1 id="showend"></h1>
Javascript:
function Value() {
var stime = document.getElementById("start");
var startTime = stime.value;
var time = new Date();
var intervaltime = document.getElementById("interval");
var timeChange = intervaltime.text;
var startHour = startTime.split(':')[0];
var startMin = startTime.split(':')[1].replace(/AM|PM/gi, '');
time.setHours(parseInt(startHour));
time.setMinutes(parseInt(startMin));
$("#showstart").html(getFormattedTime(time));
//adjusted time
time.setMinutes(time.getMinutes() + timeChange);
$("#showend").html(getFormattedTime(time));
function getFormattedTime(time) {
var postfix = "AM";
var hour = time.getHours();
var min = time.getMinutes();
//format hours
if (hour > 12) {
hour = hour - 12;
postfix = "PM";
}
//format minutes
min = ('' + min).length > 1 ? min : '0' + min;
return hour + ':' + min + ' ' + postfix;
}
}
【问题讨论】:
标签: javascript jquery html datetime time