根据你当前选中的天数 ,及当前的分钟数。
如现在时间 14号12:25分,则分钟数可以显示55(25+30)~59,小时数为12~20。
如现在时间 14号12:35,则分钟数为5(35+30-60)~59,小时数为13(12+1)~20。
至于不在当天,则好去判断了。
通过以上判断,再把对应的option值更新。

解决方案 »

  1.   

    你为什么不用个时间插件,WdatePicker.js  功能强大 ,用起来简单,想怎么搞就怎么搞。
      

  2.   


      <select id="inp_d" onchange="get_hm()"> </select>
      <select id="inp_h"> </select>
      <select id="inp_m"> </select>
    var d= new Date();
    for (var i=0; i<3; i++)
    {
    var opt = document.createElement("option");
    opt.text = opt.value = d.toLocaleString().substring(0,10);
    if (i==0) opt.selected = true;
    document.getElementById("inp_d").add(opt);
    d.setUTCSeconds(3600*24);
    }
    get_hm();
    function get_hm(){
    var d= new Date();
    var h=8, m=0; //小时和分钟的初始值
    var inp_d = document.getElementById("inp_d");
    var inp_h = document.getElementById("inp_h");
    var inp_m = document.getElementById("inp_m");
    //清空小时和分钟已有的选项
    for (var i=0; i<inp_h.options.length; )
    {
    inp_h.remove(inp_h.options[i]);
    }
    for (var i=0; i<inp_m.options.length; )
    {
    inp_m.remove(inp_m.options[i]);
    }
    //选中当天
    if (d.toLocaleString().substring(0,10) == inp_d.options[inp_d.selectedIndex].text)
    {
    h = d.getHours();
    m = parseInt( d.getMinutes() ) + 30;
    if ( m >60)
    {
    m -= 60;
    h++;
    }
    m = m+ (5-m%5); //初始值从5的倍数开始
    }
    for (h; h<21; h++)
    {
    var opt = document.createElement("option");
    opt.text = h<10 ? '0'+h : h;
    inp_h.add(opt);
    }
    for (m; m<60; m+=5)
    {
    var opt = document.createElement("option");
    opt.text = m<10 ? '0'+m : m;
    inp_m.add(opt);
    }
    }