<!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>