日期:2014-05-16 浏览次数:20441 次

?
function clickHandler()
{
//定义需要操作的XHTML元素id
var targetId;
//定义需要被操作的XHTML元素
var targetElement;
//定触发事件的事件源(其中event是隐式可用的全局对象)
var srcElement = event.srcElement;
//根据其className属性值判断它不是叶子节点,即该节点可以展开
if (srcElement.className.substr(0,7) == "outline")
{
//如果事件源是树节点前的图片
if (srcElement.id.indexOf("Image") > 0)
{
//获取该节点对应<div.../>元素的id
targetId = srcElement.id.substring(0
, srcElement.id.length - 5) + "Details";
}
//如果事件源是树节点所在的<div.../>元素
else
{
//获取该节点对应<div.../>元素的id
targetId = srcElement.id + "Details";
}
//找到对应的<div.../>元素
targetElement = document.getElementById(targetId);
//如果targetElement对象存在
if (targetElement)
{
//如果该<div.../>元素处于“隐藏”状态
if (targetElement.style.display == "none")
{
//显示该<div.../>元素
targetElement.style.display = "";
}
else
{
//否则,隐藏该<div.../>元素
targetElement.style.display = "none";
}
}
//如果事件源是树节点前的图片
if (srcElement.id.indexOf("Image") > 0)
{
//获取该节点前的<img.../>元素的id
targetId = srcElement.id;
}
//如果事件源是树节点所在的<div.../>元素
else
{
//获取该节点前的<img.../>元素的id
targetId = srcElement.id + "Image";
}
//找到对应的<img.../>元素
targetElement = document.getElementById(targetId);
//如果该<img.../>元素中显示的图片是“加号”图片
if (targetElement.src.indexOf("plus") >= 0)
{
//将<img.../>的“加号”图片换为“减号”图片
targetElement.src = "image/minus.gif";
}
else
{
//否则,将<img.../>的“减号”图片换为“加号”图片
targetElement.src = "image/plus.gif";
}
}
}
//为页面文档的onclick事件绑定事件处理函数
document.onclick = clickHandler;
<!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>
<title>JavaScript树</title>
<meta name="author" content="Yeeku.H.Lee" />
<meta name="website" content="http://www.crazyit.org" />
<meta http-equiv="Content-Type" content="text/html; charset=GBK" />
<style type="text/css">
/* 控制根节点的CSS样式定义 */
.outline {
font-size: 9pt;
margin-left: 15pt;
text-indent: -28pt;
cursor: hand;
text-decoration: none
}
/* 控制第一级子节点的CSS样式定义 */
.outline1 {
font-size: 9pt;
margin-left: 24pt;
text-indent: -36pt;
cursor: hand;
text-decoration: none
}
/* 控制第二级子节点的CSS样式定义 */
.outline11 {
font-size: 9pt;
margin-left: 38pt;
text-indent: -50pt;
cursor: hand;
text-decoration: none
}
/* 控制根节点下叶子节点的CSS样式定义 */
.passage0 {
font-size: 9pt;
margin-left: 15pt;
text-indent: -28pt;
text-decoration: none
}
/* 控制第一级节点下叶子节点的CSS样式定义 */
.passage1 {
font-size: 9pt;
margin-left: 24pt;
text-indent: -36pt;
text-decoration: none
}
/* 控制第二级节点下叶子节点的CSS样式定义 */
.passage11 {
font-size: 9pt;
margin-left: 38pt;
text-indent: -50pt;
text-decoration: none
}
</style>
<script type="text/javascript" src="tree.js">
</script>
</head>
<body>
<div id="root" class="outline">
<img id="rootImage" class="outline" alt="rootImage"
src="image/plus.gif" />
我的电脑
</div>
<div id="rootDetails" style="display: none">
<div id="child1" class="outline1">
<img id="child1Image" class="outline1" alt="child1Image"
src="image/plus.gif" />
本地磁盘 C:
</div>
<div id="child1Details" style="display: none">
<div class="passage11">
<img class="passage11" src="image/passage.gif" />
文件一
</div>
<div class="passage11">
<img class="passage11" src="image/passage.gif" />
文件二
</div>
</div>
<div id="child2" class="outline1">
<img id