Ситуация:
Я создаю код 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;
}
}