1

我目前正在尝试为剧院网站建立一个预订页面,演出日期设置为一周中的特定日期,但全年无限期运行。

我目前令人头疼的任务是创建一个函数,该函数将正确地将显示日期更新为与今天日期最接近的相关数字日期。

所以,从今天开始,我需要它显示 1 月 25 日星期五、1 月 26 日星期六和 1 月 30 日星期三的选项,然后如果明天(2013 年 1 月 25 日星期五)访问,它将把星期五的日期更改为 2 月 1 日(因为那是下周五上映)。

我想这个函数会像这样(在逻辑上):

updateShowDates(function(){
var todaysdate = getDate
var todayWeekday = getDay
var showWeekday = document.getElementByName('datepicker').value
var lengthtotarget = count number of days between todayWeekday and target weekday (i.e. Wednesday)
newShowDate = todaysdate + lengthtotarget
document.getElementByName('datepicker').innerHTML=newShowDate;
});

这将起作用的元素的 HTML 是:

<select id="dateselect" size="3">

<option value="Wednesday" title="Wednesday" name="datepicker">

    Wednesday

</option>

<option value="Friday" title="Friday" name="datepicker">

    Friday

</option>

<option value="Saturday" title="Saturday" name="datepicker">

    Saturday

</option>

</select>

我是一个 Javascript 的菜鸟,不久前我确实找到了一个对此非常有帮助的资源,但是当然,sod's law,我没有为它添加书签并且再也找不到它了。

任何帮助编写工作功能将不胜感激。这是针对大学课程的,当然我正在努力获得尽可能高的分数。

4

1 回答 1

2

在 JavaScript 中,您可以使用减法运算符计算两个日期之间的差异,这将返回两个日期之间的差异(以秒为单位)。您随后可以使用该Math.abs函数来获取差值的绝对值。(实际上,在这种情况下,这不是必需的,因为演出日期总是在未来。)您还可以使用array.sort与今天日期的差异来排序日期。

我希望结果可能看起来像这样:我没有实际测试过这段代码,但这是一个有根据的猜测。

function getNextShowTime(showTimes) {
    var x, now, soonest, offset;
    now = date;
    offset = Infinity;
    for(x = 0; x < showTimes.length; x++) {
        if (showTimes[x] - now < offset) {
            offset = showTimes[x] - now;
            soonest = showTimes[x];
        }
    }
    return soonest;
}

我提供的功能应该提供最快的演出日期。如果您想查找多个演出日期并按时间顺序对它们进行排序,您将需要使用array.sort. 您可能还想排除过去的节目。正如您所说,这是大学课程的练习,我将把这些留给您。

编辑:提供的示例代码迭代不同的显示时间。在循环的开头,soonestis NULL 和offsetis Infinity。对于每次迭代,将显示时间与当前时间进行比较,并与 进行比较offset。如果结果小于offset,则将差值分配给offset,并将演出时间分配给soonest。因此,在循环结束时,offset应该是到下一次演出时间的时间量,并且soonest应该是演出时间。

于 2013-01-24T19:24:48.993 回答