javascript中最接近的第二天和时间

javascript中最接近的第二天和时间,javascript,Javascript,情况是: 悬停按钮时,将看到下一个可用的报价时间。我用了密码 function closest (num, arr) { var closestNext=10000; for (var val = 0; val < arr.length; val++) { if (arr[val] > num) { if (arr[val] < closestNext)

情况是: 悬停按钮时,将看到下一个可用的报价时间。我用了密码

function closest (num, arr) {
        var closestNext=10000;
            for (var val = 0; val < arr.length; val++) {
              if (arr[val] > num) {
                if (arr[val] < closestNext)
                {
                    closestNext = arr[val];
                    }
              }

            }
            if (closestNext==10000){
                closestNext=arr[0];
            }
            return closestNext;

        }
函数最近(num,arr){
var closestNext=10000;
对于(var-val=0;valnum){
if(arr[val]
这让我可以显示一天(我正在用javascript加载页面)。但现在的问题是,如果报盘是在每周四和周五上午10点到11点之间发出的。报价关闭时如何显示该数据? 精心地:
假设每天下午4点有一个报价。其余时间悬停在报价显示按钮上,显示“下一个报价日期下午4点”。通过使用数组和当前时间来计算和显示,我已经解决了这个问题。现在的问题是,假设每周四至周五上午10点有报价,那么在周三,它必须显示“周四至上午10点”有报价。

如果我能够正确理解您的问题,那么下面的函数将占用下一个报价日和时间,并返回相应的消息。这里的日期是1-7(周一-周日),时间是24小时制

function getNextOffer(offer_day, offer_time) //offer_day = 4, offer_time = 16
{
    var msg = '';
    var today = new Date();
    var day_today = today.getDay();
    var time_today = today.getHours()

    if(offer_day != day_today) //different day
    {
        msg = "thurs " + offer_time; //this msg can be manipulated
    }
    else
    {
        if(time_today > offer_time) //time elapsed
        {
            msg = "next thurs " + offer_time;
        }
        else
        {
            msg = "next offer by " + offer_time;
        }
    }

    return msg;
}
编辑:对于多个值,稍微更改了逻辑位

//example array of offers [Fri, 12:00pm], [Thurs, 1:00pm], [Sat, 7:00pm]
var days = [[5, 12], [4, 13], [6, 19]];

function getNextOffer(days)
{
    var msg = '';
    var today = new Date();
    var day_today = today.getDay();
    var time_today = today.getHours();
    var pre_offer_day = 8;
    var pre_offer_time = 25;

    for(i=0; i < days.length; i++)
    {
        var offer_day = days[i][0];
        var offer_time = days[i][1];

        if(pre_offer_day >= offer_day)
        {
            if(offer_day > day_today)
            {
                msg = "next " +  offer_day + " at " + offer_time;
                pre_offer_day = offer_day;
                pre_offer_time = offer_time;
            }
            else if(offer_day == day_today && offer_time > time_today)
            {
                msg = "next " +  offer_day + " at " + offer_time;
                pre_offer_day = offer_day;
                pre_offer_time = offer_time;
            }
        }
    }

    \\if no more offers in this week set the default msg
    if(pre_offer_day == 8 && pre_offer_time == 25)
    {
        msg = msg = "next offer by thurs 10am";
    }
    return msg;
}
//报价示例数组[Fri,12:00pm],[Thurs,1:00pm],[Sat,7:00pm]
风险值天数=[[5,12],[4,13],[6,19];
函数getNextOffer(天)
{
var msg='';
var today=新日期();
var day_today=today.getDay();
var time_today=today.getHours();
var预报价日=8;
var预报价时间=25;
对于(i=0;i=报价日)
{
如果(提供日>今日日)
{
msg=“下一个”+报价日+”在“+报价日时间;
预报价日=报价日;
预报价时间=报价时间;
}
else if(offer_day==day_today&&offer_time>time_today)
{
msg=“下一个”+报价日+”在“+报价日时间;
预报价日=报价日;
预报价时间=报价时间;
}
}
}
\\如果本周没有更多优惠,请设置默认消息
如果(预报价日=8和预报价时间=25)
{
msg=msg=“周四上午10点前的下一次报价”;
}
返回味精;
}

您能更详细地解释一下吗..或者分享当前工作代码的JSFIDLE示例吗?超级。但是有点困惑,怎么做了好几天。假设相同的按钮在星期四、星期五、星期六和一天中的同一时间保持不变。那么,多天的信息应该是什么?