Это мой код javascript:
function borrowbook ()
{
var today = new Date();
var day = today.getDate();
var month = today.getMonth()+1;
var year = today.getFullYear();
var input_day = document.getElementById("textbox").value;
var newday = today.setDate(day + input_day);
var fulltime1 = newday + "-" + month + "-" + year;
alert ("Return Date is: " + fulltime1);
}
И результат не был моим ожидаемым результатом:
Фактически, что я хочу сделать, это если пользователь вводит значение в "Разрешенные дни", я хочу отобразить дату возврата книги. Но я не знаю, почему день месяца не может отображаться правильно. Любое предложение решить эту проблему проблема?
Когда вы выполните:
var newday = today.setDate(day + input_day);
вы устанавливаете значение newday на возвращаемое значение today.setDate(...), которое является клипом времени.
Поскольку * input_day * является значением элемента управления формой, и такие значения всегда являются строками, оператор +
будет конкатенировать значения, а не добавлять их.
Вероятно, вам нужна дата, поэтому:
today.setDate(day + +input_day); // set the new date, converting input_date to Number
var newday = today.getDate(); // get the new date
Кроме того, вы должны получить месяц и год после добавления дня, поскольку это может изменить их значения:
31 May + 1 day -> 1 June
Вам нужно изменить три вещи.
Вот работающий jsfiddle. http://jsfiddle.net/bbankes/VMn3x/
Во-первых, месяц и год могут быть неверными. Если сегодня было 31 декабря 2014 года, ваш код не показывался 10 января 2014 года, а вместо 10 декабря 2013 года. Вы можете исправить это, получив день месяца и год с даты продления вместо сегодняшней даты.
Во-вторых, input_day
- это строка, поэтому вам нужно проанализировать ее как целое, используя встроенную функцию javascript parseInt()
;
В-третьих, метод setDate()
объекта Date
не возвращает новую дату. Это проблема, которую показывает RobG.
Новая функция выглядит следующим образом:
function borrowbook() {
var today = new Date();
var day = today.getDate();
var input_day = document.getElementById("textbox").value;
var returnDate = new Date();
returnDate.setDate(day + parseInt(input_day));
var returnDay = returnDate.getDate();
var returnMonth = returnDate.getMonth() + 1;
var returnYear = returnDate.getFullYear();
var fulltime1 = returnDay + "-" + returnMonth + "-" + returnYear;
alert ("Return Date is: " + fulltime1);
}
+
и строковом значении. +1 за ответ.