#javascript #jquery #arrays #javascript-objects
#javascript #jquery #массивы #javascript-объекты
Вопрос:
Я пытаюсь получить доступ ко времени с заданной даты.
Вот HTML
<input type="date" name="fromdate" id="fromdate" onchange="displaytimefromdate(this.value)" />
<div id="timepicker"></div>
Вот код Javascript:
var availableTime = {"2014-07-18":["Friday, 02:02:00 - 00:00:00","Friday, 01:01:00 - 01:01:00"],"2014-07-19":["Saturday, 02:02:00 - 00:00:00","Saturday, 01:01:00 - 01:01:00"],"2014-07-20":["Sunday, 02:02:00 - 00:00:00","Sunday, 01:01:00 - 01:01:00"]};
function displaytimefromdate(timefromdate) {
jQuery('#timepicker').html('<div class="form-group"><div class="radio"><label><input class="form-control input-lg bg-darkBlue fg-white" type="radio" id="timepicker" name="timepicker" /></label>' availableTime.timefromdate '</div></div>');
}
Вот JsFiddle :- http://jsfiddle.net/rW73e /
Помощь была бы оценена.
Спасибо
Ответ №1:
Взгляните сюда:
Я присвоил timefromdate прямое строковое значение.
Итак,
availableTime[timefromdate];
работает нормально. Это не проблема.
Ваши ключи объекта date ограничены 2 или 3 значениями, которые вы включили в availableTime
, которые напрямую соответствуют времени. Другие даты не отображаются.
Если вы выберете другие даты, которых нет в availableTime
объекте, он обязательно вернется undefined
.
Ответ №2:
С использованием обозначения в скобках это работает, однако объект, к которому вы пытаетесь получить доступ, определен как array.
var availableTime = {"2014-07-18":["Friday, 02:02:00 - 00:00:00","Friday, 01:01:00 - 01:01:00"],"2014-07-19":["Saturday, 02:02:00 - 00:00:00","Saturday, 01:01:00 - 01:01:00"],"2014-07-20":["Sunday, 02:02:00 - 00:00:00","Sunday, 01:01:00 - 01:01:00"]};
function displaytimefromdate(timefromdate) {
jQuery('#timepicker').html('<div class="form-group"><div class="radio"><label><input class="form-control input-lg bg-darkBlue fg-white" type="radio" id="timepicker" name="timepicker" /></label>' availableTime[timefromdate] '</div></div>');
}
Если вы хотите использовать весь блок, вам следует изменить объект следующим образом:
var availableTime = {"2014-07-18":["Friday, 02:02:00 - 00:00:00, Friday, 01:01:00 - 01:01:00"],"2014-07-19":["Saturday, 02:02:00 - 00:00:00, Saturday, 01:01:00 - 01:01:00"],"2014-07-20":["Sunday, 02:02:00 - 00:00:00, Sunday, 01:01:00 - 01:01:00"]};
… или доступ к значению внутри массива:
function displaytimefromdate(timefromdate) {
jQuery('#timepicker').html('<div class="form-group"><div class="radio"><label><input class="form-control input-lg bg-darkBlue fg-white" type="radio" id="timepicker" name="timepicker" /></label>' availableTime[timefromdate][0] '</div></div>');
Ответ №3:
Если я правильно понимаю, вы пытаетесь получить значение из вашего объекта json.
Попробуйте:
availableTime[timefromdate]
вместо:
availableTime.timefromdate
Надеюсь, это поможет
Комментарии:
1. — это карта, где «2014-07-18» — это ключ, а значение — массив. Если вы выберете дату, которая не существует на этой карте — вы всегда получите «Undefined». Выберите некоторую дату, которая существует в вашем appreciate