zoukankan      html  css  js  c++  java
  • 原生js生成时间选择下拉框,兼容ie8

      前两天的项目中要使用时间选择下拉框,而兼容ie8的插件没找到。后来,只好自己写,在使用动态生成select框时,IE8下面出现了兼容性问题,下拉框不显示。今天,想到不用select框,改用div+ul+li的形式生成。

    先上效果:

    下面是代码,初学者,各位将就着看哈。

    <div style="100px;height:20px;">
        <input type="text" placeholder="请选择" onclick="addCombo();" style="80px;text-align: center;" id="inputTime">
        <div style="85px;height:120px;overflow-y: scroll;z-index: 2;position:absolute;display: none;" id="combo"><ul id="list"></ul></div>
    </div>

    js部分:

    <script type="text/javascript">
        var inputTime=document.getElementById('inputTime');
        var flag=true;
        var combo=document.getElementById('combo');
        var oUl=document.getElementById("list");
        function addCombo(){
            var comboVal=[];
            if (combo.style.display == "none") {
                combo.style.display = "";
                var hh= 0, valH="";
                for(var h=0;h<24;h++){
                    hh++;
                    if(hh<10){
                        valH="0"+hh;
                    }else if(hh>=24){
                        valH="00";
                    }else {valH=hh;}
                    var valM="",mm= 0;
                    for(var m= 0;m<4;m++){
                        mm=mm+15;
                        if(mm>=60){
                            valM="00";
                        }else{ valM=mm;}
                        var inputV=valH+":"+valM+":00";
                        comboVal.push(inputV);
                    }
                }
                for(var i=0;i<comboVal.length;i++){
                    var liDom=document.createElement('li');
                    liDom.innerHTML=comboVal[i];
                    oUl.appendChild(liDom);
                }
            }
            else{
                combo.style.display = "none";
            }
        }
        var eventUtil={
            addEventHandler:function(element,type,handler){
                if(element.addEventListener){
                    element.addEventListener(type,handler,false);
                }else if(element.attachEvent){
                    element.attachEvent("on"+type,handler);
                }else{
                    element["on"+type]=handler;
                }
            },
            removeEventHandler:function(element,type,handler){
                if(element.removeEventListener){
                    element.removeEventListener(type,handler,false);
                }else if(element.detachEvent){
                    element.detachEvent("on"+type,handler);
                }else{
                    element["on"+type]=handler;
                }
            },
            getTarget:function(event){//获取事件源
                if(event.target){
                    return event.target;
                }else{
                    return event.srcElement;
                }
            },
            stopPropagation:function(event){//阻止事件冒泡
                if(event.stopPropagetion){
                    event.stopPropagation();
                }else{
                    event.cancelBubble=true;
                }
            },
            stopDefault:function(event){//阻止事件默认行为
                if(event.preventDefault){
                    event.preventDefault();
                }else{
                    event.returnValue=false;
                }
            }
        }
        var arrLI=oUl.getElementsByTagName("li");
        eventUtil.addEventHandler(oUl,"mouseover",function(e){
            var target=eventUtil.getTarget(e);
            if(target.tagName.toLowerCase()=="li"){//判断事件源
                target.style.background = "#d3d3d3";
                for(var c= 0,len=arrLI.length;c<len;c++){
                    arrLI[c].onclick=(function(c){
                        return function(){
                            inputTime.value=arrLI[c].innerText;
                        }
                    })(c)
                }
            }
        })
        eventUtil.addEventHandler(oUl,"mouseout",function(e){
            var target=eventUtil.getTarget(e);
            if(target.tagName.toLowerCase()=="li"){
                target.style.background = "";
            }
        })
    </script>

    欢迎讨论。

  • 相关阅读:
    每周进度条07
    软件需求模式阅读笔记06
    每周进度条06
    软件需求模式阅读笔记05
    Django之ModelForm组件
    Django的性能优化
    分页,缓存,序列化,信号
    Django补充——中间件、请求的生命周期等
    Git基础介绍和使用
    Django基础之三
  • 原文地址:https://www.cnblogs.com/cm1236/p/5826152.html
Copyright © 2011-2022 走看看