Javascript 如何根据另一个下拉列表隐藏和显示下拉列表值

Javascript 如何根据另一个下拉列表隐藏和显示下拉列表值,javascript,html,dropdownlistfor,Javascript,Html,Dropdownlistfor,我正在尝试使用另一种方法操纵下拉列表的值。下面是完整的代码。这些值基本上只是以小时为单位的时间 <!-- start --> <div id="start"> <p>Start time</p> <select name="select1" id="select1" > <option value="8:00">8:00</opt

我正在尝试使用另一种方法操纵下拉列表的值。下面是完整的代码。这些值基本上只是以小时为单位的时间

            <!-- start -->
     <div id="start">
        <p>Start time</p>
        <select name="select1" id="select1" >
            <option value="8:00">8:00</option>
            <option value="8:30">8:30</option>
            <option value="9:00">9:00</option>
            <option value="9:30">9:30</option>
            <option value="10:00">10:00</option>
            <option value="10:30">10:30</option>
            <option value="11:00">11:00</option>
            <option value="11:30">11:30</option>
            <option value="12:00">12:00</option>
            <option value="12:30">12:30</option>
            <option value="13:00">13:00</option>
            <option value="13:30">13:30</option>
            <option value="14:00">14:00</option>
            <option value="14:30">14:30</option>
            <option value="15:00">15:00</option>
            <option value="15:30">15:30</option>
            <option value="16:00">16:00</option>
            <option value="16:30">16:30</option>
            <option value="17:00">17:00</option>
            <option value="17:30">17:30</option>
            <option value="18:00">18:00</option>
            <option value="18:30">18:30</option>
            <option value="19:00">19:00</option>
            <option value="19:30">19:30</option>
            <option value="20:00">20:00</option>
            <option value="20:30">20:30</option>
            <option value="21:00">21:00</option>
            <option value="21:30">21:30</option>
        </select>
    </div>


            <!--end time -->
    <div id="end">
        <p>End time</p>
        <select name="select2" id="select2">
            <option value="8:30">8:30</option>
            <option value="9:00">9:00</option>
            <option value="9:30">9:30</option>
            <option value="10:00">10:00</option>
            <option value="10:30">10:30</option>
            <option value="11:00">11:00</option>
            <option value="11:30">11:30</option>
            <option value="12:00">12:00</option>
            <option value="12:30">12:30</option>
            <option value="13:00">13:00</option>
            <option value="13:30">13:30</option>
            <option value="14:00">14:00</option>
            <option value="14:30">14:30</option>
            <option value="15:00">15:00</option>
            <option value="15:30">15:30</option>
            <option value="16:00">16:00</option>
            <option value="16:30">16:30</option>
            <option value="17:00">17:00</option>
            <option value="17:30">17:30</option>
            <option value="18:00">18:00</option>
            <option value="18:30">18:30</option>
            <option value="19:00">19:00</option>
            <option value="19:30">19:30</option>
            <option value="20:00">20:00</option>
            <option value="20:30">20:30</option>
            <option value="21:00">21:00</option>
            <option value="21:30">21:30</option>
            <option value="22:00">22:00</option>
         </select>

开始时间

8:00 8:30 9:00 9:30 10:00 10:30 11:00 11:30 12:00 12:30 13:00 13:30 14:00 14:30 15:00 15:30 16:00 16:30 17:00 17:30 18:00 18:30 19:00 19:30 20:00 20:30 21:00 21:30 结束时间

8:30 9:00 9:30 10:00 10:30 11:00 11:30 12:00 12:30 13:00 13:30 14:00 14:30 15:00 15:30 16:00 16:30 17:00 17:30 18:00 18:30 19:00 19:30 20:00 20:30 21:00 21:30 22:00
我的目标是确保名为endtime的下拉列表根据我在名为starttime的下拉列表中选择的内容更改其值。例如:如果我在starttime中选择了10:00小时的值,则endtime列表应仅显示10:30之后的小时,并隐藏10:00之前的小时。所以我基本上希望开始时间总是在结束时间之前

还应有最长2小时的时间限制。例如:如果在“开始时间”中选择10:00小时,则只能在“结束时间”列表中选择12:00及以下的值


我似乎不知道如何使用普通JavaScript,因为我是一个新手。

我不太了解这一点,因为这更多是一个如何编写代码的问题,而不是我尝试了所有问题

我会让您的开始时间保持原样,但会根据开始时间选择动态添加结束时间

  • 检查开始时间
  • 关于更改事件运行函数
  • 在函数中,获取开始时间值并创建一个最多12个循环
  • 在此函数中,向已创建的选择下拉列表动态添加选项

  • 看一看

    这是一个函数,它根据您的需求为“结束时间”下拉列表生成时间段数组

    现在,您只需将myFunc生成的数组附加到endTime下拉列表

    <script> 
    function myFunc(value){
                        // parse the value "10:30" to individual hour & minutes
                        var startHour = parseInt(value.split(':')[0]);
                        var startMinute =  parseInt(value.split(':')[1]);
    
                        var endTimeList = [];
                        var newArrayCount = 0;
    
                        for(var i = startHour; i <= startHour + 2; i++){
    
                            endTimeList[newArrayCount] = i + ":00";
                            newArrayCount++;
                            endTimeList[newArrayCount] = i + ":30";
                            newArrayCount++;
                        }
    
                        endTimeList.shift(); // remove first value
    
                        // remove first or last value from array based on minute timing 
                        if(startMinute != 0){
                            endTimeList.shift();
                        }else{
                            endTimeList.pop();
                        }
    
                        console.log(endTimeList.toString());
                    }
    </script>
    
    <div id="start">
        <p>Start time</p>
        <select name="select1" id="select1" onChange="myFunc(this.value)">
            <option value="8:00">8:00</option>
            <option value="8:30">8:30</option>
            <option value="9:00">9:00</option>
            <option value="9:30">9:30</option>
            <option value="10:00">10:00</option>
            <option value="10:30">10:30</option>
            <option value="11:00">11:00</option>
            <option value="11:30">11:30</option>
            <option value="12:00">12:00</option>
            <option value="12:30">12:30</option>
            <option value="13:00">13:00</option>
            <option value="13:30">13:30</option>
            <option value="14:00">14:00</option>
            <option value="14:30">14:30</option>
            <option value="15:00">15:00</option>
            <option value="15:30">15:30</option>
            <option value="16:00">16:00</option>
            <option value="16:30">16:30</option>
            <option value="17:00">17:00</option>
            <option value="17:30">17:30</option>
            <option value="18:00">18:00</option>
            <option value="18:30">18:30</option>
            <option value="19:00">19:00</option>
            <option value="19:30">19:30</option>
            <option value="20:00">20:00</option>
            <option value="20:30">20:30</option>
            <option value="21:00">21:00</option>
            <option value="21:30">21:30</option>
        </select>
    </div>
    
    
            <!--end time -->
    <div id="end">
        <p>End time</p>
        <select name="select2" id="select2">
            <option value="8:30">8:30</option>
            <option value="9:00">9:00</option>
            <option value="9:30">9:30</option>
            <option value="10:00">10:00</option>
            <option value="10:30">10:30</option>
            <option value="11:00">11:00</option>
            <option value="11:30">11:30</option>
            <option value="12:00">12:00</option>
            <option value="12:30">12:30</option>
            <option value="13:00">13:00</option>
            <option value="13:30">13:30</option>
            <option value="14:00">14:00</option>
            <option value="14:30">14:30</option>
            <option value="15:00">15:00</option>
            <option value="15:30">15:30</option>
            <option value="16:00">16:00</option>
            <option value="16:30">16:30</option>
            <option value="17:00">17:00</option>
            <option value="17:30">17:30</option>
            <option value="18:00">18:00</option>
            <option value="18:30">18:30</option>
            <option value="19:00">19:00</option>
            <option value="19:30">19:30</option>
            <option value="20:00">20:00</option>
            <option value="20:30">20:30</option>
            <option value="21:00">21:00</option>
            <option value="21:30">21:30</option>
            <option value="22:00">22:00</option>
         </select>
    
    
    函数myFunc(值){
    //将值“10:30”解析为单个小时和分钟
    var startHour=parseInt(value.split(':')[0]);
    var startMinute=parseInt(value.split(':')[1]);
    var endTimeList=[];
    var newArrayCount=0;
    对于(var i=startHour;i
    我在船上

    <html><head><script>
    var times = ["8:00","8:30","9:00","9:30","10:00","10:30","11:00",
     "11:30","12:00","12:30","13:00","13:30","14:00","14:30","15:00",
     "15:30","16:00","16:30","17:00","17:30","18:00","18:30","19:00",
     "19:30","20:00","20:30","21:00","21:30","22:00"];
    var start,end;
    function onLoad(){
     start = document.getElementById('start');
     end = document.getElementById('end');
     for(var i=0;i<times.length-1;i+=1)
      start.innerHTML += '<option value="'+times[i]+'">'+times[i]+'</option>';
     for(var i=1;i<times.length;i+=1)
      end.innerHTML += '<option value="'+times[i]+'">'+times[i]+'</option>';
     end.value = '22:00';
    }
    function buildStart(){
     var val = start.value;
     start.innerHTML = '';
     for(var i=0;i<times.indexOf(end.value);i++)
      start.innerHTML += '<option value="'+times[i]+'">'+times[i]+'</option>';
     start.value = val;
    }
    function buildEnd(){
     var val = end.value;
     end.innerHTML = '';
     for(var i=times.indexOf(start.value)+1;i<times.length;i++)
      end.innerHTML += '<option value="'+times[i]+'">'+times[i]+'</option>';
     end.value = val;
    }
    </script></head><body onload="onLoad();">
    <select id="start" onchange="buildEnd();"></select>
    <select id="end" onchange="buildStart();"></select>
    </body></html>
    
    
    变量时间=[“8:00”,“8:30”,“9:00”,“9:30”,“10:00”,“10:30”,“11:00”,
    "11:30","12:00","12:30","13:00","13:30","14:00","14:30","15:00",
    "15:30","16:00","16:30","17:00","17:30","18:00","18:30","19:00",
    "19:30","20:00","20:30","21:00","21:30","22:00"];
    var开始、结束;
    函数onLoad(){
    start=document.getElementById('start');
    end=document.getElementById('end');
    
    for(var i=0;ihi感谢您的帮助。抱歉,如果我听起来很傻,因为我是一个试图学习JS的新手。当你说将生成的数组从myfunc附加到endtime列表时,我感到困惑。这是通过使用事件实现的吗?就像你在startime列表(onchange)中所做的一样。请看这个类似的问题,嗨,谢谢你的帮助,你的代码似乎工作得很好。
    var times = [];
    for(var i=8;i<22.5;i+=0.5)
     times.push((i.toFixed(2)+'').split('.').join(':'));