導航:首頁 > 編程語言 > js動態生成樹形菜單

js動態生成樹形菜單

發布時間:2024-01-22 09:23:48

javascript實現動態載入樹形菜單(tree),

頁面既然得到抄從服務襲器傳過來的json數據之後,還要轉換為Object
比如,伺服器組裝好的json數據:
{
id:'001',
nodeMsg:'節點1'
}
這個是ajax成功之後的回調
function(xhr){
var o = eval('(' + xhr.responseText + ')');
alert(o.id + ':' + o.nodeMsg);
}

Ⅱ 如何用javascript實現動態下拉式菜單

看似簡單,實際要實現樓主的要求,如果僅使用javascript的話,需要使用AJAX非同步調用後台數據。

首先AJAX調用的方法請參考
http://..com/question/24633536.html

然後建立後台數據查詢頁面,確保頁面正常運作。輸出的數據可以格式化為JSON格式方便前台JS調用。這里假定你的後台頁面經過查詢資料庫,獲得學生名單並輸出JSON文本為:
「[{name:'學生1',sn:'001'},{name:'學生2',sn:'002'},{name:'學生3',sn:'003'}]」

下面構建前台頁面

<html>
<head>
<script type="text/javascript" src="ajax.js"></script>
<script type="text/javascript">
//重寫一下上面鏈接里的getDATA和showDATA兩個函數
function getDATA(){
var xmlhttp = getXMLR();
if (xmlhttp){
var gotourl = 'getStudents.php'; //這里假設你後台獲得學生名單的頁面是getStudents.php
xmlhttp.Open("POST",gotourl,false);
xmlhttp.onreadystatechange = showDATA;
xmlhttp.send();
}
}

function showDATA(){
if (xmlhttp.readyState==4){
var rs = xmlhttp.responseText;
}
eval("var sl = "+rs);
var dpl = document.getElementById("select1");
for(var i=0;i<sl.length;i++){
dpl.innerHTML += '<option value="'+sl[i].sn+'">'+sl[i].name+'</option>';
}

}
</script>
</head>
<body>
<select id="select1"></select>
<input type="button" value="獲取學生名單" onclick="getDATA()">
</body>
</html>

未測試過,樓主自己試試吧。

Ⅲ 如何使用jquery.treeview.js控制項,顯示樹形菜單

asp.net 內容如下:

///<summary>
///顯示樹導航菜單
///</summary>
publicvoidInitInfo()
{
stringUserId=RequestSession.GetSessionUser().UserId.ToString();//用戶ID
DataTabledt=systemi.GetMenuHtml(UserId);
if(DataTableHelper.IsExistRows(dt))
{
DataViewdv=newDataView(dt);
dv.RowFilter="ParentId='0'";
foreach(DataRowViewdrvindv)
{
strHtml.Append("<li>");
strHtml.Append("<div>"+drv["Menu_Name"]+"</div>");
//創建子節點
strHtml.Append(GetTreeNode(drv["Menu_Id"].ToString(),dt));
strHtml.Append("</li>");
}
}
}
///<summary>
///創建子節點
///</summary>
///<paramname="parentID">父節點主鍵</param>
///<paramname="dtMenu"></param>
///<returns></returns>
publicstringGetTreeNode(stringparentID,DataTabledtNode)
{
StringBuildersb_TreeNode=newStringBuilder();
DataViewdv=newDataView(dtNode);
dv.RowFilter="ParentId='"+parentID+"'";
if(dv.Count>0)
{
sb_TreeNode.Append("<ul>");
foreach(DataRowViewdrvindv)
{
sb_TreeNode.Append("<li>");
DataTableIsJudge=DataTableHelper.GetNewDataTable(dtNode,"ParentId='"+drv["Menu_Id"].ToString()+"'");//判斷是否有下級菜單
if(DataTableHelper.IsExistRows(IsJudge))
{
sb_TreeNode.Append("<div>"+drv["Menu_Name"]+"</div>");
}
else
{
sb_TreeNode.Append("<divtitle=""+drv["Menu_Title"]+""onclick="NavMenu('"+drv["NavigateUrl"]+"','"+drv["Menu_Name"]+"')"><imgsrc="/Themes/Images/32/"+drv["Menu_Img"]+""width="16"height="16"/>"+drv["Menu_Name"]+"</div>");
}
//創建子節點
sb_TreeNode.Append(GetTreeNode(drv["Menu_Id"].ToString(),dtNode));
sb_TreeNode.Append("</li>");
}
sb_TreeNode.Append("</ul>");
}
returnsb_TreeNode.ToString();
}

Ⅳ 我有一個js的菜單樹 當我點擊二級菜單後,它所屬的一級菜單就不能點擊了。而點其他一級菜單可以,怎麼解決

例如你有以下節點:
節點1,節點2,節點3
有以下四種方法
//展開樹
function open(objNode){
//...your code 展開樹
addClose(objNode);
}

//關閉樹
function close(objNode){
//...your code 關閉樹
addClose(objNode);
}

//添加展開事件
function addOpen(objNode){
//objNode節點對象
objNode.detachEvent.attachEvent("onclick",close);
objNode.attachEvent("onclick",open);
}

//添加關閉事件
function addClose(objNode){
//objNode節點對象
objNode.detachEvent.attachEvent("onclick",open);
objNode.attachEvent("onclick",close);
}

那麼在生成樹的時候給所有節點綁定方法open(objNode)就可以了。

上面的代碼是用原生的JS寫的。JQuery的。。你可以在網上找找如何綁定與刪除事件。

Ⅳ 如何用javascript 實現樹形結構菜單,可伸縮,有節點。請高手指教!

這個應該適合你:

<!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>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<link rel="stylesheet" href="http://123.jialulu.com/css/tree.css" type="text/css" />
<style type="text/css">
a {text-decoration:none;}
a,a:visited {color:#000;background:inherit;}
body {margin:0;padding:20px;font:12px tahoma,宋體,sans-serif;}
dt {font-size:22px;font-weight:bold;margin:0 0 0 15px;}
dd {margin:0 0 0 15px;}
h4 {margin:0;padding:0;font-size:18px;text-align:center;}
p {margin:0;padding:0 0 0 18px;}
p a,p a:visited {color:#00f;background:inherit;}
/*Temp CSS for View Demo*/
#CNLTreeMenu {float:left;width:249px;border:1px solid #99BEEF;background:#D2E4FC;color:inherit;margin:3px;padding:3px;}
#CNLTreeMenu {padding-bottom:15px;}
</style>
<title>無限級樹形菜單</title>
</head>
<body>
<div class="CNLTreeMenu" id="CNLTreeMenu">
<h4>CNL Tree Menu1</h4>
<p><a id="AllOpen" href="#" onClick="MyCNLTreeMenu.SetNodes(0);Hd(this);Sw('AllClose');">全部展開</a><a id="AllClose" href="#" onClick="MyCNLTreeMenu.SetNodes(1);Hd(this);Sw('AllOpen');" style="display:none;">全部折疊</a></p>
<ul>
<li class="Opened"><a href="http://www.jialulu.com">Zzsky.Cn</a>
<ul>
<li><a href="#1">技術區</a>
<ul>
<li><a href="#">網頁技術</a>
<ul>
<li class="Child"><a href="#">JavaScript</a></li>
<!--Child Node-->
<li class="Child"><a href="#">HTML/XHTML/CSS</a></li>
<li class="Child"><a href="#">Ajax</a></li>
<li class="Child"><a href="#">網頁製作工具</a></li>
<li class="Child"><a href="#">設計/圖形</a></li>
<li class="Child"><a href="#">Flash/多媒體</a></li>
<li class="Child"><a href="#">VML/Web3D</a></li>
</ul>
</li>
<!--Sub Node 3-->
<li><a href="#">Web編程</a>
<ul>
<li class="Child"><a href="#">Java</a></li>
<!--Child Node-->
<li class="Child"><a href="#">.Net</a></li>
<li class="Child"><a href="#">ASP/VBScript</a></li>
<li class="Child"><a href="#">PHP</a></li>
<li class="Child"><a href="#">Perl/Python</a></li>
<li class="Child"><a href="#">Web綜合/開源</a></li>
</ul>
</li>
<!--Sub Node 3-->
<li><a href="#">資料庫</a>
<ul>
<li class="Child"><a href="#">Access/SQLServer</a></li>
<!--Child Node-->
<li class="Child"><a href="#">MySQL/PostgreSQL</a></li>
<li class="Child"><a href="#">Oracle/DB2/Sybase</a></li>
</ul>
</li>
<!--Sub Node 3-->
<li><a href="#">伺服器</a>
<ul>
<li class="Child"><a href="#">Windows/IIS</a></li>
<!--Child Node-->
<li class="Child"><a href="#">Unix/Linux/Apache</a></li>
<li class="Child"><a href="#">應用伺服器</a></li>
</ul>
</li>
<!--Sub Node 3-->
</ul>
</li>
<!--Sub Node 2-->
<li><a href="#1">二級目錄</a>
<ul>
<li><a href="#">三級目錄</a>
<ul>
<li><a href="#">四級目錄</a>
<ul>
<li><a href="#">五級目錄</a>
<ul>
<li><a href="#">......</a>
<ul>
<li><a href="#">第n級目錄</a>
<ul>
<li class="Child"><a href="#">葉結點1</a></li>
<!--Child Node-->
<li class="Child"><a href="#">葉結點2</a></li>
<li class="Child"><a href="#">葉結點3</a></li>
</ul>
</li>
<!--Sub Node n -->
</ul>
</li>
<!--Sub Node 6 -->
</ul>
</li>
<!--Sub Node 5 -->
</ul>
</li>
<!--Sub Node 4-->
</ul>
</li>
<!--Sub Node 3-->
</ul>
</li>
<!--Sub Node 2-->
<li><a href="#1">二級目錄</a>
<ul>
<li><a href="#">三級目錄</a>
<ul>
<li><a href="#">四級目錄</a>
<ul>
<li><a href="#">五級目錄</a>
<ul>
<li><a href="#">......</a>
<ul>
<li><a href="#">第n級目錄</a>
<ul>
<li class="Child"><a href="#">葉結點1</a></li>
<!--Child Node-->
<li class="Child"><a href="#">葉結點2</a></li>
<li class="Child"><a href="#">葉結點3</a></li>
</ul>
</li>
<!--Sub Node n -->
</ul>
</li>
<!--Sub Node 6 -->
</ul>
</li>
<!--Sub Node 5 -->
</ul>
</li>
<!--Sub Node 4-->
</ul>
</li>
<!--Sub Node 3-->
</ul>
</li>
<!--Sub Node 2-->
</ul>
</li>
<!--Sub Node 1 -->
</ul>
</div>
<!-- CNLTreeMenu -->
<!--CNLTreeMenu1 End!-->
<script type="text/javascript">
<!--
function Ob(o){
var o=document.getElementById(o)?document.getElementById(o):o;
return o;
}
function Hd(o){
Ob(o).style.display="none";
}
function Sw(o){
Ob(o).style.display="";
}
function ExCls(o,a,b,n){
var o=Ob(o);
for(i=0;i<n;i++){o=o.parentNode;}
o.className=o.className==a?b:a;
}
function CNLTreeMenu(id,TagName0){
this.id=id;
this.TagName0=TagName0==""?"li":TagName0;
this.AllNodes = Ob(this.id).getElementsByTagName(TagName0);
this.InitCss = function (ClassName0,ClassName1,ClassName2,ImgUrl){
this.ClassName0=ClassName0;
this.ClassName1=ClassName1;
this.ClassName2=ClassName2;
this.ImgUrl=ImgUrl || "http://123.jialulu.com/images/s.gif";
this.ImgBlankA ="<img src=\""+this.ImgUrl+"\" class=\"s\" onclick=\"ExCls(this,'"+ClassName0+"','"+ClassName1+"',1);\" alt=\"展開/折疊\" />";
this.ImgBlankB ="<img src=\""+this.ImgUrl+"\" class=\"s\" />";
for (i=0;i<this.AllNodes.length;i++ ){
this.AllNodes[i].className==""?this.AllNodes[i].className=ClassName1:"";
this.AllNodes[i].innerHTML=(this.AllNodes[i].className==ClassName2?this.ImgBlankB:this.ImgBlankA)+this.AllNodes[i].innerHTML;
}
}
this.SetNodes = function (n){
var sClsName=n==0?this.ClassName0:this.ClassName1;
for (i=0;i<this.AllNodes.length;i++ ){
this.AllNodes[i].className==this.ClassName2?"":this.AllNodes[i].className=sClsName;
}
}
}
var MyCNLTreeMenu=new CNLTreeMenu("CNLTreeMenu","li");
MyCNLTreeMenu.InitCss("Opened","Closed","Child","http://123.jialulu.com/images/s.gif");
-->
</script>
</body>
</html>

Ⅵ 求助如何用JS實現折疊菜單功能

最簡單的方法就是把二級菜單的樣式設置為:

.oe_secondary_submenu{display:none;}

然後在點擊的時候顯示內二級菜單:

$(".oe_secondary_submenu").data("onShow")=false;//一開始狀態為隱容藏
$(".oe_secondary_menu_section").click(function(){
if($(".oe_secondary_submenu").data("onShow")){//切換二級菜單的同時改變狀態
$(".oe_secondary_submenu").hide();
$(".oe_secondary_submenu").data("onShow",false);
}else{
$(".oe_secondary_submenu").show();
$(".oe_secondary_submenu").data("onShow",true);
}
});

復雜一點的話可以用各種插件

Ⅶ jsp怎麼從mysql資料庫把樹形結構展現出來

jsp從mysql資料庫讀取數據,並填充到樹形結構菜單並展現出來的實現方法:

1、引入jquery.treeview.js樹控制項

<script type="text/javascript" src="jquery/easyui/jquery.min.js"></script>
<script type="text/javascript" src="jquery/easyui/jquery.easyui.min.js"></script>

2、jsp頁面中獲取後台mysql數據,並傳到jsp頁面來

<%
// 資料庫的名字
String dbName = "zap";
// 登錄資料庫的用戶名
String username = "sa";
// 登錄資料庫的密碼
String password = "123";
// 資料庫的IP地址,本機可以用 localhost 或者 127.0.0.1
String host = "127.0.0.1";
// 資料庫的埠,一般不會修改,默認為1433
int port = 1433;
String connectionUrl = "jdbc:sqlserver://" + host + ":" + port + ";databaseName=" + dbName + ";user=" + username
+ ";password=" + password;
//
//聲明需要使用的資源
// 資料庫連接,記得用完了一定要關閉
Connection con = null;
// Statement 記得用完了一定要關閉
Statement stmt = null;
// 結果集,記得用完了一定要關閉
ResultSet rs = null;
try {
// 注冊驅動
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
// 獲得一個資料庫連接
con = DriverManager.getConnection(connectionUrl);
String SQL = "SELECT * from note";
// 創建查詢
stmt = con.createStatement();
// 執行查詢,拿到結果集
rs = stmt.executeQuery(SQL);
while (rs.next()) {
%>
<tr>

3、填充樹形菜單:

{
id : "string" // will be autogenerated if omitted
text : "string" // node text
icon : "string" // string for custom
state : {
opened : boolean // is the node open
disabled : boolean // is the node disabled
selected : boolean // is the node selected
},
children : [] // array of strings or objects
li_attr : {} // attributes for the generated LI node
a_attr : {} // attributes for the generated A node
}

$('#tree').jstree({
'core' : {
'data' : function (obj, cb) {
cb.call(this,
['Root 1', 'Root 2']);
}
}});

閱讀全文

與js動態生成樹形菜單相關的資料

熱點內容
mdfldf是什麼文件 瀏覽:569
文件在桌面怎麼刪除干凈 瀏覽:439
馬蘭士67cd機版本 瀏覽:542
javaweb爬蟲程序 瀏覽:537
word中千位分隔符 瀏覽:392
迷你編程七天任務的地圖怎麼過 瀏覽:844
word2003格式不對 瀏覽:86
百度雲怎麼編輯文件在哪裡 瀏覽:304
起名app數據哪裡來的 瀏覽:888
微信怎麼去泡妞 瀏覽:52
百度廣告html代碼 瀏覽:244
qq瀏覽器轉換完成後的文件在哪裡 瀏覽:623
jsp中的session 瀏覽:621
壓縮完了文件去哪裡找 瀏覽:380
武裝突襲3浩方聯機版本 瀏覽:674
網路機頂盒移動網路 瀏覽:391
iphone手機百度雲怎麼保存到qq 瀏覽:148
資料庫設計與實踐讀後感 瀏覽:112
js對象是什麼 瀏覽:744
網頁文件存pdf 瀏覽:567

友情鏈接