javaScript树形结构
来源:互联网 发布:浙江华通云数据上市 编辑:程序博客网 时间:2024/05/21 15:12
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<script type="text/javascript" src="../js/jquery-1.8.0.js" ></script>
<title></title>
<script type="text/javascript">
window.onload=function(){
var li=document.getElementsByTagName("li");//获取页面中所有的li元素
var t=[];//定义临时数组
for (var i=0;i<li.length;i++) {//遍历数组
var child=li[i].childNodes;//获取当前li的所有子节点
var b=false;//定义临时变量
for (var j=0;j<child.length;j++) {//遍历当前li元素包含的节点,并检测是否包含ul元素
if(child[j].nodeType==1&&child[j].nodeName.toLowerCase()=="ul"){
b=true;//如果li包含ul元素,则设置b为true
}
}
if(b){//如果li元素包含ul元素
li[i].style.cursor="pointer";//定义当前li元素的鼠标指针样式为手型
li[i].style.listStyleImage='url(../image/plus32.png)';//修改当前li元素的选项列表图形形状
var ul=li[i].getElementsByTagName("ul")[0];//获取li中第一个ul子元素
ul.style.display="none";//隐藏第一个ul子元素
t[i]=true;
li[i].onclick=(function(ul,li,i){
return function(e){//返回闭包函数
if(li==e.target||li==window.event.srcElement){//如果当前元素就是事件触发的目标对象,则允许执行。这样做的目的是防止单击当前li元素的子元素时,也触发click事件
if(t[i]){
ul.style.display="";//恢复显示ul元素
li.style.listStyleImage='url(../image/minus.jpg)';//修改li元素图形形状
t[i]=false;
}
else{
ul.style.display="none";
li.style.listStyleImage='url(../image/plus32.png)';
t[i]=true;
}
}
if(e && e.stopPropagation)//兼容非IE浏览器
e.stopPropagation();//阻止事件传播
else //兼容IE浏览器
window.event.cancelBubble=true;//阻止事件传播
return false;//避免触发默认事件
}
})(ul,li[i],i);
}
else{ //如果li不包含ul元素
li[i].style.cursor='default';//恢复li元素的鼠标默认样式
li[i].style.listStyleImage='none';
}
}
}
</script>
</head>
<body>
<ul class="tree">
<li>首页</li>
<li>新闻
<ul>
<li>国内新闻</li>
<li>国际新闻</li>
</ul>
</li>
<li>科技
<ul>
<li>桌面科技</li>
<li>移动科技
<ul>
<li>iPhone<br /></li>
<li>htc</li>
<li>android</li>
</ul>
</li>
<li>应用科技</li>
</ul>
</li>
<li>社会</li>
</ul>
</body>
</html>
<html>
<head>
<meta charset="UTF-8">
<script type="text/javascript" src="../js/jquery-1.8.0.js" ></script>
<title></title>
<script type="text/javascript">
window.onload=function(){
var li=document.getElementsByTagName("li");//获取页面中所有的li元素
var t=[];//定义临时数组
for (var i=0;i<li.length;i++) {//遍历数组
var child=li[i].childNodes;//获取当前li的所有子节点
var b=false;//定义临时变量
for (var j=0;j<child.length;j++) {//遍历当前li元素包含的节点,并检测是否包含ul元素
if(child[j].nodeType==1&&child[j].nodeName.toLowerCase()=="ul"){
b=true;//如果li包含ul元素,则设置b为true
}
}
if(b){//如果li元素包含ul元素
li[i].style.cursor="pointer";//定义当前li元素的鼠标指针样式为手型
li[i].style.listStyleImage='url(../image/plus32.png)';//修改当前li元素的选项列表图形形状
var ul=li[i].getElementsByTagName("ul")[0];//获取li中第一个ul子元素
ul.style.display="none";//隐藏第一个ul子元素
t[i]=true;
li[i].onclick=(function(ul,li,i){
return function(e){//返回闭包函数
if(li==e.target||li==window.event.srcElement){//如果当前元素就是事件触发的目标对象,则允许执行。这样做的目的是防止单击当前li元素的子元素时,也触发click事件
if(t[i]){
ul.style.display="";//恢复显示ul元素
li.style.listStyleImage='url(../image/minus.jpg)';//修改li元素图形形状
t[i]=false;
}
else{
ul.style.display="none";
li.style.listStyleImage='url(../image/plus32.png)';
t[i]=true;
}
}
if(e && e.stopPropagation)//兼容非IE浏览器
e.stopPropagation();//阻止事件传播
else //兼容IE浏览器
window.event.cancelBubble=true;//阻止事件传播
return false;//避免触发默认事件
}
})(ul,li[i],i);
}
else{ //如果li不包含ul元素
li[i].style.cursor='default';//恢复li元素的鼠标默认样式
li[i].style.listStyleImage='none';
}
}
}
</script>
</head>
<body>
<ul class="tree">
<li>首页</li>
<li>新闻
<ul>
<li>国内新闻</li>
<li>国际新闻</li>
</ul>
</li>
<li>科技
<ul>
<li>桌面科技</li>
<li>移动科技
<ul>
<li>iPhone<br /></li>
<li>htc</li>
<li>android</li>
</ul>
</li>
<li>应用科技</li>
</ul>
</li>
<li>社会</li>
</ul>
</body>
</html>
0 0
- javaScript树形结构
- 生成一个树形结构 javascript
- 关于javascript树形结构的编写问题
- javascript+css简单实现树形结构列表
- javascript动态树形结构的实现
- javascript解析XML生成树形结构
- javascript解析XML生成树形结构
- 浅谈 JavaScript 处理DOM树形结构
- JavaScript之树形结构的数据(一)
- JavaScript之树形结构数据(二)
- 树形结构
- 树形结构
- 树形结构
- 树形结构
- 树形结构
- 树形结构
- 树形结构
- 树形结构
- android重新启动应用程序和重新启动系统
- hadoop 2.4编译、安装
- C++:用sprintf()快速把想要的东西转成string类
- WebViewJavascriptBridge学习
- 95. Unique Binary Search Trees II
- javaScript树形结构
- 2016sdau课程练习专题一 1013 problemN
- Android ndk使用介绍
- iOS的cookie认证登陆
- js中for in 和 for each in的使用
- Hive建立外部表与时间戳转换(含建dual表,修改列名,row_number() 函数等)
- Bezier曲线原理
- 有趣的数
- 第五周项目23-静态成员应用