День месяца не отображается должным образом в JavaScript (HTML)

0

Это мой код 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);

}

И результат не был моим ожидаемым результатом:

Изображение 174551

Фактически, что я хочу сделать, это если пользователь вводит значение в "Разрешенные дни", я хочу отобразить дату возврата книги. Но я не знаю, почему день месяца не может отображаться правильно. Любое предложение решить эту проблему проблема?

Теги:

2 ответа

3

Когда вы выполните:

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 
  • 0
    Извините, но ваш не может работать.
  • 0
    input_day нужно было преобразовать в Number, исправлено.
1

Вам нужно изменить три вещи.

Вот работающий 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
    Метод setDate с радостью принимает строку, проблема заключается в перегруженном операторе + и строковом значении. +1 за ответ.
  • 0
    Это работает, большое спасибо :) Но у меня есть проблема, по какой причине 'input_day' является строкой?
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню