- var childCreate = false;
- 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 loadselect(obj) {
- //第一步:取得select所在的位置
- var offset = Offset(obj);
- //第二步:将真的select隐藏
- obj.style.display = "none";
- //第三步:虚拟一个div出来代替select
- var iDiv = document.createElement("div");
- iDiv.id = "selectof" + obj.name;
- iDiv.style.position = "absolute";
- iDiv.style.width = offset.width + "px";
- iDiv.style.height = offset.height + "px";
- iDiv.style.top = offset.top + 4 + "px";
- iDiv.style.left = offset.left + 4 + "px";
- iDiv.style.background = "url('test.png') no-repeat right -6px";
- iDiv.style.border = "1px solid #ccc";
- iDiv.style.fontSize = "12px";
- iDiv.style.lineHeight = offset.height + "px";
- iDiv.style.textIndent = "4px";
- document.body.appendChild(iDiv);
- //第四步:将select中默认的选项显示出来
- var tValue = obj.options[obj.selectedIndex].innerHTML;
- iDiv.innerHTML = tValue;
- //第五步:模拟鼠标点击
- iDiv.style.background = "url('images/select.jpg') no-repeat right -2px";
- iDiv.onclick = function() {//鼠标点击
- if (document.getElementById("selectchild" + obj.name)) {
- //判断是否创建过div
- if (childCreate) {
- //判断当前的下拉是不是打开状态,如果是打开的就关闭掉。是关闭的就打开。
- document.getElementById("selectchild" + obj.name).style.display = "none";
- childCreate = false;
- } else {
- document.getElementById("selectchild" + obj.name).style.display = "";
- childCreate = true;
- }
- } else {
- //初始一个div放在上一个div下边,当options的替身。
- var cDiv = document.createElement("div");
- cDiv.id = "selectchild" + obj.name;
- cDiv.style.position = "absolute";
- cDiv.style.width = offset.width + "px";
- cDiv.style.height = obj.options.length * 20 + "px";
- cDiv.style.top = (offset.top + offset.height + 2) + 4+"px";
- cDiv.style.left = offset.left + 4+ "px";
- cDiv.style.background = "#f7f7f7";
- cDiv.style.border = "1px solid silver";
- var uUl = document.createElement("ul");
- uUl.id = "uUlchild" + obj.name;
- uUl.style.listStyle = "none";
- uUl.style.margin = "0";
- uUl.style.padding = "0";
- uUl.style.fontSize = "12px";
- cDiv.appendChild(uUl);
- document.body.appendChild(cDiv);
- childCreate = true;
- for (var i = 0; i < obj.options.length; i++) {
- //将原始的select标签中的options添加到li中
- var lLi = document.createElement("li");
- lLi.id = obj.options[i].value;
- lLi.style.textIndent = "4px";
- lLi.style.height = "20px";
- lLi.style.lineHeight = "20px";
- lLi.innerHTML = obj.options[i].innerHTML;
- uUl.appendChild(lLi);
- }
- var liObj = document.getElementById("uUlchild" + obj.name).getElementsByTagName("li");
- for (var j = 0; j < obj.options.length; j++) {
- //为li标签添加鼠标事件
- liObj[j].onmouseover = function() {
- this.style.background = "gray";
- this.style.color = "white";
- }
- liObj[j].onmouseout = function() {
- this.style.background = "white";
- this.style.color = "black";
- }
- liObj[j].onclick = function() {
- //做两件事情,一是将用户选择的保存到原始select标签中,要不做的再好看表单递交后也获取不到select的值了。
- obj.options.length = 0;
- obj.options[0] = new Option(this.innerHTML, this.id);
- //同时我们把下拉的关闭掉。
- document.getElementById("selectchild" + obj.name).style.display = "none";
- childCreate = false;
- iDiv.innerHTML = this.innerHTML;
- }
- }
- }
- }
- }
- document.body.onload = function (){
- var selects = document.getElementsByTagName("select");
- for(var i = 0 ; i < selects.length;i++){
- loadselect(selects[i]);
- }
- }
javascript美化下拉框js
最新推荐文章于 2021-06-04 00:42:27 发布