Tip: you can modify some code before running
Js nice imitation combox control drop-down menu effect<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><ptml><pead><title>Js nice imitation combox control drop-down menu effect</title><meta http-equiv="content-type" content="text/html;charset=gb2312"><!--把下面代码加到<pead>与</pead>之间--><style type="text/css">Body, input {font-family: verdana; font-size: 9pt;} h1 {font-family: tahoma; font-size: 22pt; text-align: left ;} pre {font-size: 9pt; font-family: verdana; border: 1px solid #006600; width: 400px; padding: 10px; background: # ffffff; color: #006600 ;}. ctlSelect {border: 1px solid #006600; font-family: verdana; height: 20px; color: #006600; background: # ffffff;/* background: background );*/}. selected {background: #006600; color: # ffffff; height: 20px ;}. unselected {height: 20px; color: #006600; line-height: 120%; border-bottom: 1px solid #006600 ;}. ctlSelect1 {border: 1px solid #003399; font-family: verdana; height: 20px; color: #003399; background: # ffffff;/* background: background );*/}. selected1 {background: #003399; color: # ffffff; height: 20px ;}. unselected1 {height: 20px; color: #003399; line-height: 120%; border-bottom: 1px solid #003399 ;}. ctlSelect2 {border: 1px solid #990000; font-family: verdana; height: 20px; color: #990000; background: # ffffff;/* background: background );*/}. selected2 {background: #990000; color: # ffffff; height: 20px ;}. unselected2 {height: 20px; color: #990000; line-height: 120%; border-bottom: 1px solid #990000 ;}. copyright {margin-top: 10px; font-size: 9pt; text-align: center; color: #333; font-weight: bold ;}</style></pead><body><!--把下面代码加到<body>与</body>之间--><script language="javascript"><!--function $(objID){return document.getElementById(objID);};function Offset(e){var t = e.offsetTop;var l = e.offsetLeft;var w = e.offsetWidth;var h = e.offsetHeight-2;while(e=e.offsetParent){t+=e.offsetTop;l+=e.offsetLeft;}return {top : t,left : l,width : w,height : h}}//-----------------------------------------------function simulateSelect(handlerFunction) { with(this){this.IDs = [];this.name = this;this.value = null;this.onchangeArgs = [];this.onchange = handlerFunction;this.height = 20;this.width = null;this.number = null;this.ctlStyle = "CtlSelect";this.selStyle = "selected";this.unselStyle = "unselected";this.elementPrefix = "e__";this.inputPrefix = "i__";this.containerPrefix = "c__";this.buttonPrefix = "b__";//property for beta Version//can editable comboxthis.readonly = true;if( arguments.length>0 )for(var i=0; i<arguments.length; i++)onchangeArgs[i-1] = arguments[i];return this;}};simulateSelect.prototype.init = function(ctlSelIDs) { with(this){eval(name).append(ctlSelIDs);eval(name).simulates();}};simulateSelect.prototype.style = function() { with(this){ctlStyle = arguments[0];selStyle = arguments[1];unselStyle = arguments[2];}};//-----------------------------------------------simulateSelect.prototype.append = function(ctlSelIDs) { with(this){if( ctlSelIDs.indexOf(",")>0 ){var arrCtlSel = ctlSelIDs.split(",");for(var i=0; i<arrCtlSel.length; i++){IDs.push(arrCtlSel[i]);}}elseIDs.push(ctlSelIDs);}};simulateSelect.prototype.checkupOnMouseDown = function(e) { with(this){//here compatible mfvar el = e ? e.srcElement : e.target;if( el.id.indexOf(elementPrefix)>-1 || el.id.indexOf(inputPrefix)>-1 || el.id.indexOf(containerPrefix)>-1 || el.id.indexOf(buttonPrefix)>-1 ){return;}else{for(var i=0; i<eval(name).IDs.length; i++)if( $(containerPrefix + IDs[i]) )$(containerPrefix + IDs[i]).style.display = "none";}}};simulateSelect.prototype.simulates = function() { with(this){for(var i=0; i<IDs.length; i++)eval(name).simulate(IDs[i]);}};simulateSelect.prototype.simulate = function(ctlSelID) { with (this){var input;var button;var object;var offset;object = $(ctlSelID);offset = Offset(object);input = document.createElement("INPUT");button = document.createElement("BUTTON");button.setAttribute("id", buttonPrefix + ctlSelID);button.value = "6";button.style.fontFamily = "Webdings, Marlett";button.style.background = "";button.onclick = input.onclick = function(){this.blur();eval(name).expand(ctlSelID, offset);};input.onselectstart = function(){eval(name).expand(ctlSelID, offset);event.returnValue = false; };input.setAttribute("id", inputPrefix + ctlSelID);input.title = button.title = "click expand options";input.style.cursor = button.style.cursor = "default";input.className = button.className = ctlStyle;input.style.width = (width>0 ? width : object.offsetWidth);height ? input.style.height=button.style.height=height : "";input.value = value = object[0].text;if( readonly==true ) input.readOnly=true;//this method is only IEobject.insertAdjacentElement("afterEnd",button);object.insertAdjacentElement("afterEnd",input);object.style.display = 'none';}};simulateSelect.prototype.expand = function(ctlSelID, offset) { with(this){var div;var object = $(ctlSelID);if( !$(containerPrefix + ctlSelID) ){div = document.createElement("DIV");div.style.position = "absolute";div.style.display = "block";div.setAttribute("id", containerPrefix + ctlSelID);div.className = ctlStyle;div.style.left = offset.left;div.style.top = offset.top + offset.height;div.style.width = (width ? width : offset.width) + 20;if( number ){div.style.height = height * number;div.style.overflow = "auto";}document.body.appendChild(div);for(var i=0; i<object.length; i++){div = document.createElement("DIV");div.setAttribute("id", div.id = elementPrefix + ctlSelID + i);div.style.cursor = "default";if( object[i].text==$(inputPrefix + ctlSelID).value )div.className = selStyle;elsediv.className = unselStyle;div.innerText = div.title = object[i].text;div.style.height = height;div.setAttribute("value", object[i].value);div.onmouseover = function(){for(var j=0; j<$(containerPrefix + ctlSelID).childNodes.length; j++){if($(containerPrefix + ctlSelID).childNodes[j]==this)$(containerPrefix + ctlSelID).childNodes[j].className = selStyle;else$(containerPrefix + ctlSelID).childNodes[j].className = unselStyle;}};div.onclick = function(){$(inputPrefix + ctlSelID).value = this.innerText;$(containerPrefix + ctlSelID).style.display = "none";if( onchange && value!=$(inputPrefix + ctlSelID).value ){onchange.apply(this,onchangeArgs);value = $(inputPrefix + ctlSelID).value;}};$(containerPrefix + ctlSelID).appendChild(div);}return;}if( $(containerPrefix + ctlSelID).style.display=="none" ){for(var i=0; i<object.length; i++){if( object[i].text==$(inputPrefix + ctlSelID).value )$(elementPrefix + ctlSelID + i).className = selStyle;else$(elementPrefix + ctlSelID + i).className = unselStyle;}$(containerPrefix + ctlSelID).style.display="block";return;}if( $(containerPrefix + ctlSelID).style.display=="block" ){$(containerPrefix + ctlSelID).style.display="none";return;}}};simulateSelect.prototype.getValue = function(ctlSelID) { with(this){if( $(inputPrefix + ctlSelID) )return $(inputPrefix + ctlSelID).value;elsereturn null;}};simulateSelect.prototype.addEvent = function(w, h) { with(this){}};//-----------------------------------------------//window.onerror = Function("return true;");//IE onlydocument.attachEvent("onmousedown", function() {a.checkupOnMouseDown(event);b.checkupOnMouseDown(event);c.checkupOnMouseDown(event)});window.attachEvent("onload", function() {window.a = new simulateSelect();a.style("CtlSelect", "selected", "unselected");a.init("s1");//-------------------------------------------window.b = new simulateSelect();b.style("CtlSelect1", "selected1", "unselected1");b.width = 300;b.number = 9;b.init("s2");//-------------------------------------------window.c = new simulateSelect(s1onchange, "never-online", a.getValue('s1'));c.style("CtlSelect2", "selected2", "unselected2");c.width = 320;c.init("s3");});function s1onchange(para, s){alert("onchage handler fire " + para + s);}//--></script><p>Simulate combox control</p><p>Demonstrate</p><p>Normal select:<select id="s0"><option value="- please select your options -">-Please select your options-</option><option value="1">Option1</option><option value="2">Option2</option><option value="3">Option3</option><option value="4">Option4</option><option value="5">Option5</option></select></p><p>Simulate select:<select id="s1"><option value="- please select your options -">-Please select your options-</option><option value="1">1option1</option><option value="2">1option2</option><option value="3">1option3</option><option value="4">1option4</option><option value="5">1option5</option></select></p><p>Scroll simulate select:<select id="s2"><option value="- please select your options -">-Please select your options-</option><option value="1">2option1</option><option value="2">2option2</option><option value="3">2option3</option><option value="4">2option4</option><option value="5">2option6</option><option value="5">2option7</option><option value="5">2option8</option><option value="5">2option9</option><option value="5">2option10</option><option value="5">2option11</option><option value="5">2option12</option><option value="5">2option13</option><option value="5">2option14</option></select></p><p>Onchange handler fire:<select id="s3"><option value="- please select your options -">-Please select your options-</option><option value="1">3option1</option><option value="2">3option2</option><option value="3">3option3</option><option value="4">3option4</option><option value="5">3option5</option></select></p><button onclick="alert(a.getValue('s1') + 'nn' + b.getValue('s2') + 'nn' + c.getValue('s3'))" class="CtlSelect">Get value</button><button onclick="alert('next version')" class="CtlSelect">Append item</button><button onclick="alert('next version')" class="CtlSelect">Remove item</button><p>Description</p><pre></pre><div class="copyright">Power By blueDestiny, never-online</div>China WEB first stop</body></ptml>
Tip: you can modify some code before running