<title>自定义列表框</title> <style> .selectDiv { border: 1px solid #FF6600;} .optionDiv { border:1px solid black;border-top:0px;position:absolute;cursor:default;clip:rect(auto auto 0% auto);} .optionDiv div { font-size:11px;font-family:Tahoma;padding-left:8px;line-height:160%;background-color:white;} .optionDiv img { vertical-align: middle;margin-right:3px;} .defaultSelect { font-size:11px;font-family:Tahoma;padding-left:6px;border:1px solid white;cursor:default;} .arrow { font-family:webdings;line-height:13px;border:1px solid #FF6600;background-color:#FF6600;width:15px;text-align:center;cursor:default;font-size:8px;height:18px;} </style> <body> <span id="sel"></span><button style="font-family:Arial;font-size:10px;width:22px;height:18px;margin-top:4px;" onclick="putValue()">Go</button> <SCRIPT LANGUAGE="javascript"> //用户变量 var oWhere = document.getElementById("sel"); //显示文字 var OptionText = new Array(); OptionText[0] = "--请选择--"; OptionText[1] = "男生"; OptionText[2] = "女生"; OptionText[3] = "人妖"; //显示图片 var OptionValue = new Array(); OptionValue[0] = ""; OptionValue[1] = "男生"; OptionValue[2] = "女生"; OptionValue[3] = "人妖"; //系统变量 var selectedOver = false; var selectedValue = 0; //下拉菜单主体 var selectDiv = document.createElement("table"); var selectDivTR = selectDiv.insertRow(); var defaultValueTD = selectDivTR.insertCell(); var arrow = selectDivTR.insertCell(); with(selectDiv)cellSpacing=0,cellPadding=0,border=0,className="selectDiv"; with(defaultValueTD)innerHTML = OptionText[0],className="defaultSelect"; with(arrow)innerText=6,className="arrow"; oWhere.appendChild(selectDiv); //外层Div var optionDiv = document.createElement("div"); //设置下拉菜单选项的坐标和宽度 with(optionDiv.style) { var select = selectDiv; var xy = getSelectPosition(select); pixelLeft = xy[0]; pixelTop = xy[1]+select.offsetHeight; optionDiv.className = "optionDiv"; } //下拉菜单内容 var Options = new Array(); for (var i=0;i<OptionText.length;i++) { Options[i] = optionDiv.appendChild(document.createElement("div")); } for (i=0;i<Options.length;i++) { Options[i].innerHTML = OptionText[i]; Options[i].index = i; } oWhere.appendChild(optionDiv); //列表宽度自适应 var SelectWidth = Options[0].offsetWidth+arrow.offsetWidth+8; selectDiv.style.width=SelectWidth;; optionDiv.style.width=SelectWidth; /*事件*/ //禁止选择文本 selectDiv.onselectstart = function() {return false;} optionDiv.onselectstart = function() {return false;} //下拉菜单的箭头 arrow.onmousedown = function() { this.setCapture(); } arrow.onmouseup = function() { event.cancelBubble = true; this.releaseCapture(); showHide(); } document.onmouseup = function() { optionDiv.style.clip="rect(auto auto 0% auto)"; if(selectedOver) { with(defaultValueTD.style)background="",color=""; selectedOver=false; } } defaultValueTD.onmouseup = function() { event.cancelBubble = true; showHide(); } //移动Option时的动态效果 for (i=0;i<Options.length;i++) { Options[i].attachEvent("onmouseover",function(){moveWithOptions("highlight","white")}); Options[i].attachEvent("onmouseout",function(){moveWithOptions("","")}); Options[i].attachEvent("onmouseup",selectedText); } function moveWithOptions(bg,color) { with(event.srcElement) { style.backgroundColor = bg; style.color = color; } } function selectedText() { event.cancelBubble=true; defaultValueTD.innerHTML = event.srcElement.innerHTML; with(defaultValueTD.style)background="highlight",color="white"; optionDiv.style.clip="rect(auto auto 0% auto)"; selectedOver = true; selectedValue = event.srcElement.index; } i = 0; /*通用函数*/ //获取对象坐标 function getSelectPosition(obj) { var objLeft = obj.offsetLeft; var objTop = obj.offsetTop; var objParent = obj.offsetParent; while (objParent.tagName != "BODY") { objLeft += objParent.offsetLeft; objTop += objParent.offsetTop; objParent = objParent.offsetParent; } return([objLeft,objTop]); } function dynamicOptions() { optionDiv.style.clip="rect(auto auto "+i+"% auto)",i=i+20; if(i<101) setTimeout("dynamicOptions()",5); else i=0; } function showHide() { with(optionDiv.style) { if (clip=="rect(auto auto 0% auto)"||clip=="") dynamicOptions(); else clip="rect(auto auto 0% auto)"; } } function putValue() { var url = OptionValue[selectedValue]; alert(url); } </SCRIPT> [Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]