JS通用选项卡

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd" >
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title> Insert title here</title >
<style type="text/css" >
#titleLabelJSId li {
       /*设置ID为Label的元素下所有li元素样式,主要是要设置float:left这个属性,这样才能将li元素排成一排;同时设置了list-style:none这个属性,目的是防止li元素出现实心圆点*/
       margin-left: 1px ;
       padding: 3px ;
       width: 50px ;
       background-color: #94A5F8 ;
       float: left ;
       list-style: none ;
       cursor: pointer ;
}

#titleLabelJSId .currentLabel {
       background-color:#0f0 ;
}
</style>
</head>
<body>

<!--我们将第一个标签的背景色设置红色(class="currentLabel"),因为默认显示的是第一个标签的内容-->
<ul id= "titleLabelJSId">
       <li class="currentLabel" >标签1</ li>
       <li> 标签2</li >
       <li> 标签3</li >
</ul>
<div style="clear : both;"></div >
<!--因为默认是不显示的,所以要将display属性设置为none-->
<div id= "containerDivJSId">
       <div> 这时里是标签1对应的内容 </div>
       <div style="display : none">这时里是标签2对应的内容 </div>
       <div style="display : none"> 这时里是标签3对应的内容 </div>
</div>
<script language="javascript" type="text/javascript">
/**
 * 显示当前选中的ul中li所对应div中某一个,其它的都隐藏,同时将li的class值置为curClass,其它的都清空
 * @param obj oCur : 当前选中的ul中li的对象
 * @param string titleId : ul标签的id值
 * @param string containerId : ul标签所对应内容的div的id值
 * @param string curClass : ul标签中li当前选中时class值
 */
function changeLabel(oCur, titleId, containerId, curClass)
{
       var containers = document.getElementById(containerId).childNodes; //获取所有的内容元素子节点
      var labels = document.getElementById(titleId).childNodes; //获取所有的标签
      var length = containers.length;;
       for(var iLoop = 0; iLoop < length; iLoop ++)
      {
             var container = containers[iLoop];
             var label = labels[iLoop];
             var current = iLoop == oCur.value; //根据索引是否为li元素的value值来判断是否为当前标签
            if ("DIV" == container.nodeName) { container.style.display = current ? "block" : "none";}
             if ("LI" == label.nodeName) { label.className = current ? curClass : "" ;}
      }

/**
 * 对所有子节点进行循环,增加onmouseover事件,也可以根据需要添加onclick事件
 * @param string titleId : ul标签的id值
 * @param string containerId : ul标签所对应内容的div的id值
 * @param string curClass : ul标签中li当前选中时class值
 */
function labelAddEvent(titleId, containerId, curClass)
{
       var labels = document.getElementById(titleId).childNodes; //获取ID为Label无素下的所有子节点,childNodes是DOM的一个属性
      var length = labels.length;
       //对所有子节点进行循环,增加onmouseover事件,也可以根据需要添加onclick事件
      for (var iLoop = 0; iLoop < length; iLoop ++)
      {
             var label = labels[iLoop];
             if ("LI" == label.nodeName) //只处理LI的DOM节点,目的是为了兼容Firefox,因为Firefox会把空格与换行与当成一个节点处理
            {
                  label.value = iLoop; //为每一个标签的value赋上当前的索引,当点击标签的时候不用循环标签就知道是哪一个标签了
                  label.onmouseover = function(){ changeLabel(this, titleId, containerId, curClass);} //调用ChangeLabel函数,并把当前对象传过去
            }
      }
}
labelAddEvent('titleLabelJSId', 'containerDivJSId', 'currentLabel' );
</script>
</body>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值