得到' undefined'在javascript中访问对象内的数组时

时间:2014-07-06 09:27:07

标签: javascript jquery arrays javascript-objects

我正在尝试从指定日期开始访问时间。

这是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/

帮助将不胜感激。

由于

3 个答案:

答案 0 :(得分:1)

看看这里:

http://jsfiddle.net/rW73e/2/

我给timefromdate一个直接的字符串值。

所以,

availableTime[timefromdate];

工作正常。没问题。

您的日期对象键限制为availableTime中包含的2或3个值,这些值直接映射到时间。其他日期未映射。

如果您选择availableTime对象中不存在的其他日期,则肯定会返回undefined

答案 1 :(得分:0)

如果我理解正确,你试图从你的json对象中获取一个值。

尝试:

availableTime[timefromdate] 

而不是:

availableTime.timefromdate

希望这有帮助

答案 2 :(得分:0)

使用括号表示法它可以正常工作,但是您尝试访问的对象定义为数组。

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>');
}

http://jsfiddle.net/rW73e/3/

如果要使用整个块,则应将对象重新排列为:

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"]};

http://jsfiddle.net/rW73e/4/

...或访问数组中的值:

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>');

http://jsfiddle.net/rW73e/5/