从函数返回值有问题

时间:2011-11-20 21:16:11

标签: javascript

请看看这段代码并告诉我为什么不起作用?我认为功能返回存在问题。感谢所有重播。

var movie1 = {
    title: "Buckaroo Banzai",
    genre: "Cult classic",
    rating: 5,
    showtimes: ["1:00pm", "3:00pm", "7:00pm"]
}

function getNextShowing(movie) {
    var now = new Date().getTime();
    for (var i = 0; i < movie.showtimes.length; i++) {
        var showtime = getTimeFromString(movie.showtimes[i]);
        if ((showtime - now) > 0) {
            return "Next showing of " + movie.title + " is " + movie.showtimes[i];
        }
    }
    return null;
}

function getTimeFromString(timeString) {
    var theTime = new Date();
    var time = timeString.match(/(\d+)(?::(\d\d))?\s*(p?)/);
    theTime.setHours( parseInt(time[1]) + (time[3] ? 12 : 0) );
    theTime.setMinutes( parseInt(time[2]) || 0 );
    return theTime.getTime();
}

var nextShowing = getNextShowing(movie1);
alert(nextShowing);

2 个答案:

答案 0 :(得分:1)

问题在于这行代码:

if ((showtime - now) > 0)

(showtime - now)始终小于零,因此getNextShowing()函数始终返回null;

答案 1 :(得分:0)

我测试了上面的代码,当我的计算机中的时间大于或等于晚上7点时,它只返回null。

否则它工作正常。尝试更改showtimes数组的时间,以便它们超前于计算机中的当前时间。或者尝试在早上运行它:)。 我认为这就是你需要做的一切。