打印本文 打印本文 关闭窗口 关闭窗口
模仿combox(select)控件 省去美化烦恼
作者:武汉SEO闵涛  文章来源:敏韬网  点击数988  更新时间:2009/4/23 11:33:06  文章录入:mintao  责任编辑:mintao
不用整天为美化select控件烦恼了。

  1、可批量美化select控件。

  2、可以有onchange句柄。

  3、触发onchange的函数可带参数。

  3、可以得到select的值。

  4、可设置像select类似的滚动条(如大于或等于8个数目时出现滚动条)

  5、可设置宽度和高度

  API参考:

  //首先生成一个simulateSelect的实例

  //构造函数的第一个可选参数为触发onchange的函数,其它的为onchange函数的参数;

  c = new simulateSelect(s1onchange, "never-online");

  //设置select的CSS,第一个参数为控件的主要CSS、第二个为选中条目时的CSS、第三个为没有选中条目时的CSS

  c.style("CtlSelect2", "selected2", "unselected2");

  //设置select的宽度和高度;

  c.width = 320;

  c.height = 20;

  //初始化参数为:select控件的ID,可以用逗号分离,进行批量转换;

  c.init("s1,s2,s3");

  下一版本将可修改combox

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> simulate combox control - http://www.never-online.net </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
<style>
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:url({E5066804-650D-4757-9BA4-A92DB8817A18}0.jpg);*/
}
.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:url({E5066804-650D-4757-9BA4-A92DB8817A18}0.jpg);*/
}
.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:url({E5066804-650D-4757-9BA4-A92DB8817A18}0.jpg);*/
}
.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>
</HEAD>

<BODY>
<SCRIPT LANGUAGE="JavaScript">
<!--
//-------------------------------------------------------------
//  @ Module: simulate select control, IE only.
//  @ Debug in: IE 6.0
//  @ Script by: blueDestiny, never-online
//  @ Updated: 2006-3-22
//  @ Version: 1.0 apha
//  @ Email: blueDestiny [at] 126.com
//  @ Website: http://www.never-online.net
//  @ Please Hold this item please.
//
//  API
//  @ class: simulateSelect()
//
//  @ object.style(ctlStyle[,selStyle][,unselStyle])
//    ctlStyle: main control combox css class name
//    selStyle: when mouseover or option focus css class name
//    unselStyle: options blur's css class name
//
//  @ object.width=(widthPX)
//    widthPX must be a digit number.
//
//  @ object.height=(heightPX)
//    heightPX must be a digit number.
//
//  @ object.getValue(ctlSelID)
//    ctlSelID is the unique select control ID
//
//  -------------- for the next Version ----------
//  @ object.readOnly = (blnReadOnly)
//    blnReadOnly must be a boolean type or a number type.
//  @ object.addEvent(w, h)
//    w: fire handler's event.
//    h: handler function.
//-------------------------------------------------------------

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
 }
}
//-----------------------------------------------

打印本文 打印本文 关闭窗口 关闭窗口