原生js生成时间选择下拉框,兼容ie8
前两天的项目中要使用时间选择下拉框,而兼容ie8的插件没找到。后来,只好自己写,在使用动态生成select框时,IE8下面出现了兼容性问题,下拉框不显示。今天,想到不用select框,改用div+ul+li的形式生成。
先上效果:
下面是代码,初学者,各位将就着看哈。
<div style="width:100px;height:20px;"> <input type="text" placeholder="请选择" onclick="addCombo();" style="width:80px;text-align: center;" id="inputTime"> <div style="width: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>
欢迎讨论。