<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style type="text/css">
li {
list-style: none;
}
li ul {
display:none;
}
p {
position: relative;
cursor: pointer;
}
span {
position: absolute;
left: -20px;
color: red;
}
</style>
</head>
<body>
<script type="text/javascript">
function getStyle(el,attr){
return getComputedStyle(el)[attr];
}
var data = [
{
text: "家用电器",
child: [
{
text:"电视",
child: [
{
text:"曲面电视",
child:[
{
text:"4k屏"
},
{
text:"1080P"
}
]
},{
text:"超薄电视"
}
]
},{
text:"空调",
child: [
{
text: "壁挂式空调"
},{
text: "柜式空调"
},{
text: "中央空调"
}
]
},{
text:"洗衣机"
},{
text:"冰箱"
},{
text:"进口电器"
}
]
},{
text: "手机 / 运营商 / 数码"
},{
text: "电脑 / 办公",
child:[
{
text: "电脑整机"
},{
text: "电脑配件"
}
]
},{
text: "家居 / 家具 / 家装 / 厨具"
},{
text: "男装 / 女装 / 童装 / 内衣"
},{
text: "美妆个护 / 宠物"
}
];
(function(){
var list = document.createElement("ul");
create(list,data);
document.body.appendChild(list);
addEv();
function create(list,data){//传入ul和数组
for(var i = 0; i < data.length; i++){//循环数组长度生成li和内容
var li = document.createElement("li");
var p = document.createElement("p");
p.innerHTML = data[i].text;
li.appendChild(p);
if(data[i].child){//如果还有子项
var ul = document.createElement("ul");//生成ul
create(ul,data[i].child);//传入ul,以及子项的数组,生成子项的li
li.appendChild(ul);
p.innerHTML = "<span>+</span>" + data[i].text;
}
list.appendChild(li);
}
}
})();
function addEv(){
var p = document.querySelectorAll('p');
for(var i = 0; i < p.length; i++){
p[i].onclick = function(){
var ul = this.nextElementSibling;/*获取它下边的ul */
if(ul){ /*存在*/
var uls = this.parentNode.parentNode.getElementsByTagName("ul");
for(var i = 0; i <uls.length;i++){
if(uls[i] != ul){
uls[i].style.display = "none"; //清除掉同级所有ul(排除当前个)
}
}
/* 操作当前个 */
if(getStyle(ul,"display") == "none"){
ul.style.display = "block";
} else {
ul.style.display = "none";
}
}
}
}
}
</script>
</body>
</html>

最新文章

  1. 帆软报表FineReport数据连接中游标问题解决方案汇总
  2. 小讲堂:Mobox文档管理软件中的文件外链是什么?
  3. linux screen 命令详解
  4. 前端工程师的PS默认工作区
  5. android开发布局文件imageview 图片等比例缩放:
  6. [收藏]Asp.net MVC生命周期
  7. A Simple Problem with Integers poj 3468 多树状数组解决区间修改问题。
  8. BT之下拉菜单
  9. Convert Sorted Array to Binary Search Tree &amp; Convert Sorted List to Binary Search Tree
  10. Google高级搜索技巧十则
  11. octotree-chrome插件,Github代码阅读神器
  12. Batch入门教程丨第一章:部署与Hello World!(上)
  13. 解决vs启动出现“cannot find one or more components .Please reinstall the application”
  14. Java的selenium代码随笔(4)
  15. 三级区域jquery插件
  16. [css] css3 中的新特性加强记忆
  17. CrackMe-005全破详解(图文+源码)--上篇
  18. hadoop 0.20.2伪分布式安装详解
  19. 在用easyui中做CRUD功能时,当删除一行或多行数据后再点击修改会提示你选中了多行,如何解决这个bug了?
  20. android scheme打开天猫,淘宝

热门文章

  1. @JsonIgnoreProperties注解不起作用的问题解决
  2. Laravel 5.2 教程 - 文件上传
  3. eNSP自学入门(基础)
  4. 解决NSTimer循环引用Retain Cycle问题
  5. Linux 零拷贝技术
  6. day_1 练习2
  7. TPshop入门大纲
  8. hdu2717Catch That Cow 简单BFS
  9. iOS之copy、strong使用,block特性
  10. jquery源码 DOM加载