Step By Step 制作XML的Javascript树形目录

javascript|xml

    很多地方都会用到树形目录,比如CSDN论坛的列表,这样的代码也有很多,但是很多人都是拿来主义,没有自己动手做个,下面我就和大家一起分享怎么来自己做一个XML做数据源的TreeMenu。从中你会看到很多有用的JS脚本和页面元素的一些重要但经常被我们忽略的属性用法。

    Step1.倒着来,看看完成后的TreeMenu是什么样子的?

JS脚本动态生成的HTML大纲,这个是动态生成的,页面源代码里没有
<div id="MyDiv">
<span class="hasItems" id="csxmlTree" style="MARGIN-LEFT: 0px" text="根目录" expanding="true" target treeId>
<img  src="http://www.webjx.com/htmldata/2005-10-10/images/contract.gif">根目录</span><br>
<span style="DISPLAY: none"><span class="hasItems" id="csxmlTree" style="MARGIN-LEFT: 16px" text="目录1" expanding="false" target treeId="1000">
<img  src="http://www.webjx.com/htmldata/2005-10-10/images/contract.gif">目录1</span><br>
<span class="Items" id="csxmlTree" style="MARGIN-LEFT: 32px" text="目录1.1" expanding="false" target treeId="2000" href="javascript:alert(this.innerHTML);">
<img src="http://www.webjx.com/htmldata/2005-10-10/images/endnode.gif">目录1.1</span><br>
<span class="Items" id="csxmlTree" style="MARGIN-LEFT: 32px" text="目录1.2" expanding="false" target="_blank" treeId="2001" href="1.htm">
<img src="http://www.webjx.com/htmldata/2005-10-10/images/endnode.gif">目录1.2</span><br>
<span class="hasItems" id="csxmlTree" style="MARGIN-LEFT: 16px" text="目录2" expanding="false" target treeId="3000">
<img  src="http://www.webjx.com/htmldata/2005-10-10/images/contract.gif">目录2</span><br>
<span class="Items" id="csxmlTree" style="MARGIN-LEFT: 32px" text="目录2.1" expanding="false" target treeId="3001">
<img src="http://www.webjx.com/htmldata/2005-10-10/images/endnode.gif">目录2.1</span><br>
<span class="Items" id="csxmlTree" style="MARGIN-LEFT: 32px" text="目录2.2" expanding="false" target treeId="3002">
<img src="http://www.webjx.com/htmldata/2005-10-10/images/endnode.gif">目录2.2</span><br>
<span class="Items" id="csxmlTree" style="MARGIN-LEFT: 32px" text="目录2.3" expanding="false" target treeId="3003">
<img src="http://www.webjx.com/htmldata/2005-10-10/images/endnode.gif">目录2.3</span><br>
<span class="Items" id="csxmlTree" style="MARGIN-LEFT: 32px" text="目录2.3" expanding="false" target treeId="3004">
<img src="http://www.webjx.com/htmldata/2005-10-10/images/endnode.gif">目录2.3</span><br>
<span class="hasItems" id="csxmlTree" style="MARGIN-LEFT: 16px" text="目录3" expanding="false" target treeId="4000">
<img  src="http://www.webjx.com/htmldata/2005-10-10/images/contract.gif">目录3</span><br>
<span class="Items" id="csxmlTree" style="MARGIN-LEFT: 32px" text="目录3.1" expanding="false" target treeId="4001">
<img src="http://www.webjx.com/htmldata/2005-10-10/images/endnode.gif">目录3.1</span><br>
<span class="Items" id="csxmlTree" style="MARGIN-LEFT: 16px" text="目录4" expanding="false" target treeId="5000">
<img src="http://www.webjx.com/htmldata/2005-10-10/images/endnode.gif">目录4</span><br>
 </span>
</div>

 

    上面的代码是不是看起来很乱?其实不是的,你把它粘贴到FP等可视化工具的代码里面,就能看清楚结构了。其实很简单,就是SPAN网页Tag生成一格嵌套的结构。我们接下来要写的JS脚本的主要目的就是读取XML文件然后生成这样的结构。所以这个是关键,你一定要看明白。不妨把它先存成一个网页,看看效果(注意,原封不动拷贝的话,只能显示“根目录”一项,你需要改动蓝色的地方,把none去掉),除了红色的DIV其他都是JS脚本动态生成的。class="Items"和class="hasItems"是类似这样的样式表单:

.hasItems{font-weight:bold;height:20px;padding:3 6 0 6;margin:2px;cursor:hand;color:#555555;border:1px solid #fffffa;}
.Items{height:20px;padding:3 6 0 6;margin:1px;cursor:hand;color:#555555;border:1px solid #fffffa;}

    察看黄色部分的样式表,可以明白Tree结构形式上就是靠这个定义左边距来达到效果了,通过缩紧不同的量,这样就会很清楚把树形构造出来了。

    接下来要写的脚本就是要通过一定的方法把上面提到的要点构造出HTML代码来。大家仔细把上面的弄明白,下面我们就开工!!!

时间: 2024-10-10 21:27:50

Step By Step 制作XML的Javascript树形目录的相关文章

DHTML+XML+ASP+CSS=树形目录

asp+|css|dhtml|xml|css|dhtml|xml 树形目录显示程序 问题描述: 在我们项目中常常会出现自关联的数据表,如果我们从整体看去,整个表就呈现为一个树形数据结构(对于复杂的情况,它可能变成一个图).当我们对这个表进行显示,编辑时,如果不采用好的表现形式,会显得很笨拙,为此,我们开发这样的树形结构的程序.在上一版本中,我们使用的是递归算法来实现,在我们对这个算法评测时发现,对于拥有成千上万条记录的数据库就不再能胜任了,所以在新的算法版本中,我们使用了XML技术,动态的发现数

在Web界面下如何生成像资源管理器一样的树形目录(版本2.0) eeff(原作) [精]

web 在Web界面下如何生成像资源管理器一样的树形目录(版本2.0)    eeff(原作)    关键字     数形目录 XML ASP Web Javascript    树形目录显示程序问题描述: 在我们项目中常常会出现自关联的数据表,如果我们从整体看去,整个表就呈现为一个树形数据结构(对于复杂的情况,它可能变成一个图).当我们对这个表进行显示,编辑时,如果不采用好的表现形式,会显得很笨拙,为此,我们开发这样的树形结构的程序.在上一版本中,我们使用的是递归算法来实现,在我们对这个算法评

ASP高级学习:数据库动态生成树形目录

一.  目录树的广泛应用   为了这段内容,在百度上搜了搜,内容一大通,相关的竟没有.搜什么搜嘛?用处不是明摆着吗?资源管理器文件夹的管理,论坛中多级论坛的管理,JAVA中的AWT正是缺乏包括树形目录这样的组件才用处受限......谁这么没礼貌,一点面子都不给,叫我怎么讲下去?清了清嗓子:  在我们项目中常常会出现自关联的数据表,从整体看去,整个表就呈现为一个树形数据结构.当我们对这个表进行显示.编辑时,如果不采用好的表现形式,会显得很笨拙,采用树形目录进行管理显然是一个不错的主意.  (斧子抡

基于数据库动态生成树形目录

动态|数据|数据库 一. 目录树的广泛应用 为了这段内容,在百度上搜了搜,内容一大通,相关的竟没有.搜什么搜嘛?用处不是明摆着吗?资源管理器文件夹的管理,论坛中多级论坛的管理,JAVA中的AWT正是缺乏包括树形目录这样的组件才用处受限......谁这么没礼貌,一点面子都不给,叫我怎么讲下去?清了清嗓子: 在我们项目中常常会出现自关联的数据表,从整体看去,整个表就呈现为一个树形数据结构.当我们对这个表进行显示.编辑时,如果不采用好的表现形式,会显得很笨拙,采用树形目录进行管理显然是一个不错的主意.

新手RoR十分钟初体验Step By Step

http://yulimin.javaeye.com/blog/35929 关键字: rails   Ruby Rails RoR     新手RoR十分钟初体验Step By Step 声明一下,这是个新手启动的体验文章,高手不要看了...:) 1.安装RubyWindows用户去 http://rubyforge.org/ 的 http://rubyforge.org/projects/rubyinstaller/ 下载 One-Click Installer - Windows 安装即可,

在自定义Server Control中捆绑JS文件 Step by Step

js|server 注:本文基于.NET 2.0 和 VS2005 我们在编写 Server Control 的时候难免要用到一些客户端脚本(javascript),如何把脚本和编译好的dll一起发布就成了一个问题.把一段一段的javascript block写在cs文件里是一件很"丑陋"的事情,javascript就应呆在*.js文件里.js文件怎样才能"打包"到dll里呢?查了很多文档,最后实践下来发现有很多细节是需要注意的.整理出来,免得大家走弯路.废话无多,

SQL Server BI Step by Step SSIS 7 (End)

SQL Server BI Step by Step SSIS 7 (End) - 事务,错误输出,事件处理,日志记录 和其它程序一样,SSIS包同样需要健壮,稳定的运行,这样的程序才有可靠性和可伸缩性.SSIS提供了如下方面的支持: 1.事务: 可以对一个程序包设置成一个或者多个事务,甚至可以对两个程序包设置成一个事务.为了 保证数据的一致性,你还可以DTC事务或者SQL Server引擎级的事务. 2.检查点: 用来记录一个程序包出错时任务的运行情况,以便程序包再次启动时,直接从发生错误的

Enterprise Library Step By Step系列(一) 配置应用程序块

写在前面: 最近准备写Enterprise Library Step By Step的系列文章,对于每一个应用程序块,我都会用入门篇,进阶篇,剖析篇三篇文章去写. 在入门篇里会详细介绍应用程序块的使用步骤,主要是针对新手入门的:进阶篇会介绍一些应用程序块的更深的应用及扩展机制:剖析篇会去分析应用程序块的底层设计和类设计的一些内容.所有的观点都纯属个人理解,有不当之处请大家多多指教. 一.配置应用程序块概述: 几乎每一个应用程序都需要一些配置信息,这些信息可以是简单的数据库连接信息,或者复杂的多块

如何实现XML+XSL+javascript数据排序

javascript|xml|排序|数据 如何实现XML+XSL+javascript数据排序 数据排序模版<?xml version="1.0" encoding="gb2312" ?><xsl:stylesheet version="1.1" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/