婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 純jsp打造無限層次的樹代碼

純jsp打造無限層次的樹代碼

熱門標簽:淮南騰訊地圖標注 漯河辦理400電話 商丘百應電話機器人有沒有效果 黃石智能營銷電銷機器人效果 怎樣把地圖標注出來 開封便宜外呼系統報價 電話機器人的特色和創新 騰訊地圖標注商戶改名注冊入駐 地圖標注人員兼職
做樹并不復雜,但我們通常做的是2層或3層,那樣的數據一般來自多個表,比如:部門,員工
然而這種自連接的表,其沒有確定的層次,可能是無限多級
比如:a是b的上級,b是c的上級,c是d的上級...
每個上級有幾個下級,下級的層次,都是動態的
解決這個問題,其實主要用到js的知識
可以使用div的innerHTML屬性
當然也可以用table,用append的方法
下面就用div的innerHTML屬性來實現
主要思路是通過super,在document中查找id與自身super關聯的div,這個div就是自身的上級,把自己附加到這個div中就可以了
另外,通過設置自己的title,保存了自己上級的id
為了看到層層縮進效果,設置了div的style為左邊距有10px
+ 和 - 通過div中的span實現,這里改變的是span的innerHTML,也可以換為用圖片,改變img的src即可
而在點擊這些 + 或 - 的時候,會調用一個js函數,傳入自己的id,這個函數會在document的所有div中查找自己的下級,由于每個div的title保存了其上級的id,所以只有找到那些title為自己id的就可以了
找到這些下級,就設置其隱藏或顯示即可
建表
use tempdb
go
create table tb
(
id int primary key,
name varchar(50) not null,
super int references tb
)
insert into tb values (1,'總公司',null);
insert into tb values (2,'長沙分公司',1);
insert into tb values (3,'株洲分公司',1);
insert into tb values (4,'湘潭公司',1);
insert into tb values (5,'長沙東區分點',2);
insert into tb values (6,'長沙南區分點',2);
insert into tb values (7,'湘潭東區分點',4);
insert into tb values (8,'長沙東區分點一處',5);
insert into tb values (9,'長沙東區分點二處',5);
insert into tb values (10,'長沙東區分點三處',5);
insert into tb values (11,'長沙南區分點一處',6);
insert into tb values (12,'長沙南區分點二處',6);
insert into tb values (13,'湘潭東區分點一處',7);
insert into tb values (14,'湘潭東區分點二處',7);
insert into tb values (15,'長沙東區分點一處一門市部',8);
insert into tb values (16,'長沙東區分點一處二門市部',8);
select id,name,isnull(super,0) as super from tb order by super
-------------------------------------------------------------------------------------------------------------------------
tree.jsp文件
%@ page language="java" import="java.sql.*,java.util.*" pageEncoding="gbk" contentType="text/html; charset=gbk" isELIgnored="false"%>
%
//獲取數據庫的數據,并保存為雙層集合,然后放到pageContext中
//這樣與使用dao和servlet得到的,放到request中的方式是一致的
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
String url = "jdbc:microsoft:sqlserver://localhost:1433;databasename=tempdb";
Connection cn = DriverManager.getConnection(url,"sa","sa");
Statement st = cn.createStatement();
String sql = "select id,name,isnull(super,0) as super from tb order by super";
ResultSet rs = st.executeQuery(sql);
ArrayList lstAll = new ArrayList();
ArrayList lstLine;
while(rs.next()) {
lstLine = new ArrayList();
lstLine.add(rs.getString(1));
lstLine.add(rs.getString(2));
lstLine.add(rs.getString(3));
lstAll.add(lstLine);
}
pageContext.setAttribute("lstAll",lstAll);
%>
script>
//初始化樹
function ini() {
var str = "${lstAll}";
var ary = str.split("], [");
var i,j;
var len = ary.length;
var ary2,len2;
var str,str2,obj;
for(i=0;ilen;i++) {
ary[i] = ary[i].replace("[[","");
ary[i] = ary[i].replace("]]","");
ary2 = ary[i].split(", ");
if(ary2[2]=="0") {
//頂層:設置其上級為div0
obj = document.getElementById("div0");
//定義自身內容,設置自身可見 -- display:block
//span用于確定 + 或 - ,并且ope函數用于點擊時顯示或隱藏下級
str2 = "div style='display:block' id='div" + ary2[0] + "'>span id='span" + ary2[0] + "' onclick='ope(" + ary2[0] + ")'>+/span>nbsp;nbsp;" + ary2[1] + "/div>";
}
else {
//其他:查找其上級,即:ID為 'div' + ary2[2] 的div
//如:如果ary2[2]為3,那么其上級為 div3
obj = document.getElementById("div" + ary2[2]);
//定義自身內容,其中title用于存儲其上級ID,設置自身不可見 -- display:none
str2 = "div style='display:none' id='div" + ary2[0] + "' title='" + ary2[2] + "'>span id='span" + ary2[0] + "' onclick='ope(" + ary2[0] + ")'>+/span>nbsp;nbsp;" + ary2[1] + "/div>";
}
str = obj.innerHTML; //獲取上級原來的內容
str = str + str2; //附加當前div
obj.innerHTML = str; //設置上級的新內容
}
}
//點某個節點時,展開或隱藏其下級
function ope(id) {
//首先改變 + 和 -
var obj = document.getElementById("span" + id);
if(obj.innerHTML == "+") {
obj.innerHTML = "-";
}
else {
obj.innerHTML = "+";
}
//然后找到下級,并改變其可見性
var objs = document.getElementsByTagName("div"); //獲取所有的div
var len = objs.length;
//遍歷這些div,找到所有的下級,即: title為id 的div,對于這些下級
//如果原來是隱藏,就讓其顯示;否則,隱藏--通過設置其style的display即可
var i,title;
for(i=0;ilen;i++) {
obj = objs[i];
title = obj.title;
if(title==null || isNaN(title)) {
continue;
}
if(parseInt(title)==parseInt(id)) {
if(obj.style.display=="none") {
obj.style.display = "block";
}
else {
obj.style.display = "none";
}
}
}
}
/script>
style>
div{margin-left:10px;color:darkblue}
span{color:red;cursor:hand}
/style>
body onload="ini();">
div id="div0">/div>
------------------------------------------------------------------------------------------------------------------------------
大家可以進一步想,實際點每個內容的時候,一般會鏈接到某個url,那么,這里怎么處理?
如果你熟悉html和js,當然就是很容易的
思路:數據庫中該表增加一個字段,url,定義鏈接地址
在js中修改代碼
大家還可以考慮把它做成標簽,更方便

標簽:拉薩 大興安嶺 馬鞍山 亳州 武威 岳陽 鄭州 紅河

巨人網絡通訊聲明:本文標題《純jsp打造無限層次的樹代碼》,本文關鍵詞  純,jsp,打造,無限,層次,的,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《純jsp打造無限層次的樹代碼》相關的同類信息!
  • 本頁收集關于純jsp打造無限層次的樹代碼的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    一区二区三区免费观看| 99国产精品久| 欧美日韩和欧美的一区二区| 日日夜夜精品视频天天综合网| 精品久久久久久久久久久久久久久 | 国产盗摄一区二区| 亚洲激情欧美激情| 久久嫩草精品久久久精品一| 日本久久电影网| 国产91精品欧美| 久久精品国产99国产| 亚洲精品成人在线| 亚洲视频一区二区在线观看| 久久久久久综合| 国产亚洲精久久久久久| 欧美不卡一区二区三区四区| 欧美精品在线观看一区二区| 一本一道久久a久久精品综合蜜臀| 黄色日韩网站视频| 国内精品国产成人国产三级粉色 | 日产精品久久久久久久性色| 亚洲人成在线观看一区二区| 精品女同一区二区| 日韩一卡二卡三卡四卡| 日韩伦理电影网| 亚洲乱码国产乱码精品精可以看| 成人欧美一区二区三区黑人麻豆 | 国产精品久久99| 日韩一区在线看| 亚洲男同1069视频| 亚洲午夜电影网| 奇米一区二区三区av| 黑人巨大精品欧美一区| 国产米奇在线777精品观看| 国产99久久久国产精品潘金 | 欧美日韩在线直播| 777a∨成人精品桃花网| 欧美va亚洲va国产综合| 久久亚洲一区二区三区明星换脸| 欧美mv和日韩mv的网站| 国产亚洲欧美日韩在线一区| 亚洲欧美日韩久久| 日韩电影在线观看电影| 国产成人在线色| 91精品1区2区| 日韩精品一区二区三区视频播放 | 777xxx欧美| 国产午夜精品一区二区| 亚洲精品免费在线观看| 日韩高清欧美激情| 成人激情黄色小说| 制服丝袜国产精品| 日韩久久一区二区| 乱一区二区av| 欧美综合亚洲图片综合区| 精品福利av导航| 一区二区三区在线观看网站| 久久99国内精品| 在线观看成人小视频| 久久久久久黄色| 精品国产亚洲在线| 亚洲视频 欧洲视频| 免费在线观看精品| 色av成人天堂桃色av| 久久久久国产精品人| 午夜精品一区二区三区三上悠亚 | 亚洲乱码国产乱码精品精的特点| 免费欧美高清视频| 91成人国产精品| 国产精品麻豆久久久| 美脚の诱脚舐め脚责91 | 色哟哟国产精品| 国产婷婷色一区二区三区四区| 亚洲香蕉伊在人在线观| 成人激情免费视频| 国产日韩v精品一区二区| 欧美一区二区三区四区高清| 亚洲视频一二三区| 国产白丝网站精品污在线入口| 在线电影一区二区三区| 亚洲综合免费观看高清完整版 | 777色狠狠一区二区三区| 亚洲日本va在线观看| 国产99久久久国产精品潘金| 精品成人在线观看| 美女视频黄 久久| 精品亚洲成a人| 日韩写真欧美这视频| 日韩精品1区2区3区| 欧美日韩中文字幕一区二区| 亚洲最大色网站| 欧洲激情一区二区| 在线观看三级视频欧美| 亚洲人精品午夜| 色婷婷综合五月| 一级特黄大欧美久久久| 色综合久久综合中文综合网| 中文字幕亚洲在| 一区二区三区在线视频免费观看| 97成人超碰视| 亚洲男人天堂一区| 欧美性猛片aaaaaaa做受| 一区二区三区在线视频免费| 欧美三级视频在线播放| 欧美福利视频导航| 日韩av一二三| 精品盗摄一区二区三区| 国产精品1区2区| 国产精品久久久久国产精品日日| av电影一区二区| 亚洲成a人片在线观看中文| 日韩国产高清在线| 精品国产伦理网| 波多野结衣精品在线| 亚洲自拍偷拍av| 欧美大片拔萝卜| av一区二区三区在线| 欧美高清视频一二三区| 麻豆精品一区二区三区| 欧美国产一区在线| 91激情在线视频| 精品一区二区三区在线观看 | 日本不卡一区二区| 久久久美女艺术照精彩视频福利播放| 国产a久久麻豆| 亚洲一区在线视频观看| 国产·精品毛片| 一卡二卡欧美日韩| 精品剧情v国产在线观看在线| 国产成人av电影在线播放| 亚洲图片欧美色图| 久久久久久一二三区| 亚洲www啪成人一区二区麻豆| 日韩情涩欧美日韩视频| 91香蕉国产在线观看软件| 日日摸夜夜添夜夜添精品视频| 欧美精品一区二区蜜臀亚洲| 色综合天天性综合| 久久久久99精品国产片| 91成人网在线| 国产馆精品极品| 青草国产精品久久久久久| 自拍视频在线观看一区二区| 日韩欧美美女一区二区三区| 图片区小说区国产精品视频| 欧美经典一区二区| 日韩视频免费直播| 欧美性猛交xxxxxxxx| 国产99久久久国产精品潘金| 美女视频黄a大片欧美| 欧美三级在线播放| 成人毛片视频在线观看| 国产一区在线不卡| 美女视频网站久久| 亚洲国产精品一区二区尤物区| 国产欧美综合色| 国产精品99久久久久久久vr| 五月婷婷综合网| 一区二区三区四区国产精品| 国产精品乱码久久久久久| 久久综合九色综合欧美就去吻| 欧美精品vⅰdeose4hd| 欧美三级日韩在线| 一区二区三区欧美日| 国产精品国产精品国产专区不蜜| 精品国产91九色蝌蚪| 日韩欧美国产综合在线一区二区三区| 欧美艳星brazzers| 91国产成人在线| 亚洲图片欧美一区| 亚洲日本电影在线| 亚洲欧美激情视频在线观看一区二区三区 | 亚洲成在线观看| 一区二区三区美女视频| 日韩美女啊v在线免费观看| 中文字幕高清一区| 中文字幕在线一区免费| 成人欧美一区二区三区小说| 国产精品传媒视频| 中文字幕一区二区在线播放| 中文字幕中文乱码欧美一区二区| 国产精品成人午夜| 亚洲另类在线视频| 亚洲欧美aⅴ...| 亚洲女子a中天字幕| 亚洲一卡二卡三卡四卡| 日本欧美久久久久免费播放网| 日日夜夜精品视频天天综合网| 偷拍亚洲欧洲综合| 久久99九九99精品| 丰满少妇久久久久久久| 不卡区在线中文字幕| bt欧美亚洲午夜电影天堂| 91高清在线观看| 欧美一区二区观看视频| 久久久精品tv| 国产精品成人网| 亚洲一区二区精品视频| 人禽交欧美网站| 国产一级精品在线|