js美化select下拉列表

近几天公司需要美化一个select下拉列表,在这记录下以便以后使用,js部分我已经封装成对象了,只用在html页面new 一下带上 标签的name值就可以使用了,是不是很方便呢!select的样式大小图片背景都可以随意修改,只需要修改css样式就好了!

下面开始贴代码了:
html:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link href="css/base.css" rel="stylesheet" type="text/css"/>
<link href="css/importselect.css" rel="stylesheet" type="text/css"/>
<title>select dom</title>
<script type="text/javascript" src="js/importselect.js"></script>
<script type="text/javascript">
window.onload=function (){
new selectStyle('area_selet2');
new selectStyle('area_selet1');
};
</script>
</head>
<body>
<div class="center">
<div id="age_sel_2">
<select name="area_selet2">
<option value="请选择">请选择</option>
<option value="ASP" >ASP</option>
<option value="PHP" >PHP</option>
<option value=".NET" >.NET</option>
</select>
</div>
</div>
<div class="center">
<div id="age_sel_2">
<select name="area_selet1">
<option value="请选择">请选择</option>
<option value="ASP" >ASP</option>
<option value="PHP" >PHP</option>
<option value=".NET" >.NET</option>
</select>
</div>
</div>
</body>
</html>

下面是css样式部分:

html{background:#fff;}
.center{ margin-left:auto; margin-right:auto; margin-top:10px; width:300px;position:relative;}
#age_sel_2 div.tag_select{display:block;width:141px;height:36px;line-height:36px; float:left; color:#fff; text-align:center; font-size:12px;}
#age_sel_2 div.tag_select_hover{display:block;width:141px;height:36px;line-height:36px;float:left; color:#fff; text-align:center; font-size:12px;}
#age_sel_2 div.tag_select_open{display:block;color:#fff;width:141px;height:36px;line-height:36px;text-align:center;font-size:12px;float:left;}
#age_sel_2 ul.tag_options{width:136px;font-size:12px;color:#fff;line-height:36px;text-align:center;float:left;border:1px solid #37A2DA;border-top:0;background:#39A9FE;position:absolute;left:43px; top:33px;}
#age_sel_2 ul.tag_options li{display:block;width:136px;height:36px;text-decoration:none;}
#age_sel_2 ul.tag_options li.open_hover{background:#2174B7;color:#fff;}
#age_sel_2 ul.tag_options li.open_selected{background:#B2DBFC;color:#000;}
.select_box{background:url(../images/select02.gif) no-repeat;width:181px; height:36px;}
.select_txt{width:40px; height:36px;font-size:12px;color:#fff;line-height:36px;text-align:center;float:left;}
.select_fh{background:url(../images/select01.png) -17px 0 no-repeat;width:13px;height:16px;position:absolute;left:155px;top:11px;}
.select_fh_on{background:url(../images/select01.png) 0 0 no-repeat;width:16px;height:14px;position:absolute;left:155px;top:11px;}

下面是js部分:

function selectStyle(name){
this.selects = document.getElementsByName(name);
isIE = (document.all && window.ActiveXObject && !window.opera) ? true : false;
this.rSelects();
};

selectStyle.prototype.stopBubbling=function (ev) {
ev.stopPropagation()
};
//定义$为获取id写法
function $(id) {
return document.getElementById(id)
};
//加载dom元素
selectStyle.prototype.rSelects=function () {
for (i=0;i<this.selects.length;i++){
this.selects[i].style.display = 'none';
select_tag = document.createElement('div');
select_tag.id = 'select_' + this.selects[i].name;
select_tag.className = 'select_box';
this.selects[i].parentNode.insertBefore(select_tag,this.selects[i]);

select_text = document.createElement('div');
select_text.className='select_txt';
select_text.innerHTML='姓名';
select_tag.appendChild(select_text);
select_fh = document.createElement('div');
select_fh.className='select_fh';
select_fh.id='select_fh';
select_tag.appendChild(select_fh);

select_info = document.createElement('div');
select_info.id = 'select_info_' + this.selects[i].name;
select_info.className='tag_select';
select_info.style.cursor='pointer';
select_tag.appendChild(select_info);
select_ul = document.createElement('ul');
select_ul.id = 'options_' + this.selects[i].name;
select_ul.className = 'tag_options';
select_ul.style.position='absolute';
select_ul.style.display='none';
select_ul.style.zIndex='999';
select_tag.appendChild(select_ul);
this.rOptions(i,this.selects[i].name);
this.mouseSelects(this.selects[i].name);
if (isIE){
this.selects[i].onclick = new Function("clickLabels3('"+this.selects[i].name+"');window.event.cancelBubble = true;");
}
else if(!isIE){
this.selects[i].onclick = new Function("clickLabels3('"+this.selects[i].name+"')");
this.selects[i].addEventListener("click", this.stopBubbling, false);
}
}
}
selectStyle.prototype.rOptions=function (i, name) {
var _this=this;
var options = this.selects[i].getElementsByTagName('option');
var options_ul = 'options_' + name;
for (n=0;n<this.selects[i].options.length;n++){
option_li = document.createElement('li');
option_li.style.cursor='pointer';
option_li.index=n;
option_li.className='open';
$(options_ul).appendChild(option_li);
option_text = document.createTextNode(this.selects[i].options[n].text);
option_li.appendChild(option_text);
option_selected = this.selects[i].options[n].selected;
if(option_selected){
option_li.className='open_selected';
option_li.id='selected_' + name;
$('select_info_' + name).appendChild(document.createTextNode(option_li.innerHTML));
}
option_li.onmouseover = function(){ this.className='open_hover';}
option_li.onmouseout = function(){
if(this.id=='selected_' + name){
this.className='open_selected';
}
else {
this.className='open';
}
}
option_li.onclick =function(){_this.clickOptions(i,this.index,_this.selects[i].name)};//new Function("this.clickOptions("+i+","+n+",'"+this.selects[i].name+"')");
}
}

selectStyle.prototype.mouseSelects=function (name){
var _this=this;
var sincn = 'select_info_' + name;
if (isIE){
$(sincn).onclick = function(){_this.clickSelects(name);window.event.cancelBubble=true;};// new Function("_this.clickSelects('"+name+"');window.event.cancelBubble = true;");
}
else if(!isIE){
$(sincn).onclick = function(){_this.clickSelects(name)};
$('select_info_' +name).addEventListener("click", this.stopBubbling, false);
}
}
//点击下拉列表事件
selectStyle.prototype.clickSelects=function (name){
var sincn = 'select_info_' + name;
var sinul = 'options_' + name;
for (i=0;i<this.selects.length;i++){
if(this.selects[i].name == name){
if( $(sincn).className =='tag_select'){
$(sincn).className ='tag_select_open';
$(sinul).style.display = '';
}
else if( $(sincn).className =='tag_select_open'){
$(sincn).className = 'tag_select';
$(sinul).style.display = 'none';
}
}
else{
$('select_info_' + this.selects[i].name).className = 'tag_select';
$('options_' + this.selects[i].name).style.display = 'none';
}
}
}
//选项点击事件
selectStyle.prototype.clickOptions=function (i,n, name){
var li = $('options_' + name).getElementsByTagName('li');
$('selected_' + name).className='open';
$('selected_' + name).id='';
li[n].id='selected_' + name;
li[n].className='open_hover';
$('select_' + name).removeChild($('select_info_' + name));
select_info = document.createElement('div');
select_info.id = 'select_info_' + name;
select_info.className='tag_select';
select_info.style.cursor='pointer';
$('options_' + name).parentNode.insertBefore(select_info,$('options_' + name));
this.mouseSelects(name);
$('select_info_' + name).appendChild(document.createTextNode(li[n].innerHTML));
$( 'options_' + name ).style.display = 'none' ;
$( 'select_info_' + name ).className = 'tag_select';
this.selects[i].options[n].selected = 'selected';
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
HTML提供了创建简单的下拉列表的标记。您可以使用标记创建一个选择框,其中包含各种选项供用户选择。下面是一个使用HTML标记创建简单下拉列表的示例: ```html <select> <option value="option1">选项1</option> <option value="option2">选项2</option> <option value="option3">选项3</option> <option value="option4">选项4</option> </select> ``` 在上面的示例中,`<select>`标记用于创建一个下拉列表,`<option>`标记用于定义每个选项。`value`属性用于为每个选项指定一个值,这个值可以在提交表单时用于处理用户选择的选项。用户可以通过点击下拉列表并选择一个选项来进行选择。 请注意,上述示例只是一个基本的示例,您可以根据需要进行修改和扩展。例如,您可以添加更多选项,可以使用CSS样式来美化下拉列表的外观,还可以使用JavaScript来处理用户的选择事件。<span class="em">1</span><span class="em">2</span> #### 引用[.reference_title] - *1* [我们如何使用HTML表单中的简单项目下拉列表?](https://blog.csdn.net/weixin_30082413/article/details/117863793)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [Html form 下拉列表菜单与跳转菜单表单标签篇](https://blog.csdn.net/weixin_39632379/article/details/117709627)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值