用JavaScript+DIV打造层叠明细表javascript

用javascript+div打造层叠明细表

用javascript+div打造层叠明细表

引言:

大家可能都用过access吧,对里面master/detail数据浏览时的层叠缩放样式有没有印象?当点击主项是即会在此项下显示明细表的相关资料,这样是不是很方便和直观呢?那么,有没有兴趣自己也来做一个这样的界面呢?接下来我将会用javascript技法结合asp描述带您一起来实现。

如果您对html比较熟悉的话,相信您对其中的div定位标记一定不会陌生吧?其实明细表就是一个隐藏的div,它其实是在一开始就存在的,只不过被隐藏了而已。当我们点击主表中的某个特定标志的时候,就通过某个事件(如click)将它的状态置为显示就可以了。

好了,原理您已经清楚了,那么到底如何实现呢?接下来我们先设计好表格,从上面我们知道,首先应该设计好主表的表格,并且明细表的表格应该是包含在主表的某个单元格中的,这样才能达到很好的效果。而建立表格的代码,应该是包含在循环读出数据表中多个记录的过程中的,不然就没有意议了。在显示主表记录的时候,我们应该创建一个div标记(每个标记都应该有个唯一的id标识),用以响应事件,如:

%

j=1

do while not rs.eof

%>

tr>

'定义一个id为main1、main2序列的div标记

div id="main"%=j%>class=“menu” width=“100%” >

'让编号响应单击事件

td height=“22”>a href=# title=“点击这里展开/折叠” οnclick=“expandit(" &j& ");return false”>%=rs("id")%>a>td>

div>

'……

tr>

%

j=j+1

rs.movenext

loop

%>

每显示完一条主表记录,我们就应该读取相关的明细表记录,并且用另一个div标记把所有相关的明细记录循环显示并包含起来。结合上面的过程,我们有了以下语句:

do while not rs.eof

tr>

“定义一个id为main1、main2序列,class为menu的div标记

div id=“main" &j& "“ class=“menu” width=“100%” >

'让编号响应单击事件

td height=“22”>a href=# title=“点击这里展开/折叠” οnclick=“expandit(" &j& ");return false”>%=rs("id")%>a>td>

div>

“……

tr>

tr>td>

'定义一个id为page1、page2序列,class为child的div标记

div id=“page" &j& "“ class=“child”>

table border=“1” width=“100%” >

'在这里循环读取明细表记录

table>

div>

td>tr>

j=j+1

rs.movenext

loop

设计好了div标记和表格显示页面后,接下来就用javascript来设计响应事件语句,以达到页面一开始就全部隐藏,单击其中一个id只显示相关的明细记录而隐藏其它无关的明细记录的目的。

function initit(){

divcount = document.all.tags("div");

for (i=0; idivcount.length; i++) {

obj = divcount(i);

if (obj.classname == "child" || obj.classname == "child1") obj.style.display = "none";

}

}

var priorid=1000;

function expandit(el) {

divcount = document.all.tags("div");

for (i=0; idivcount.length; i++) {

obj = divcount(i);

if (obj.classname == "child" || obj.classname == "child1")

if (priorid!=el){

obj.style.display = "none";}

}

priorid=el;

obj2 = eval("page" + el);

obj4 = eval("main" + el);

if (obj2.style.display == "none") {

obj2.style.display = "block";

}

else {

obj2.style.display = "none";

}

}

onload = initit;

以上javascript的具体语法意思我就不详述的,initit函数的功能是在页面加载或刷新的时候全部隐藏明细表,expandit函数的功能是显示相关的明细表而将其它无关的明细表隐藏。

可以看出,用javascript+div的方式实现明细表简单而高效,界面效果也很容易让用户接受。

点击下圖观看詳細效果,欢迎各位指正。

文章出處:http://www.cnblogs.com/bonny.wong

文章作者:上山砍柴去

寫作時間:2005-03-22

绿色通道:好文要顶关注我收藏该文与我联系

posted on 2005-03-22 16:16 非诚勿扰2 阅读(5959) 评论(13)编辑 收藏

发表评论

1565282

回复 引用 查看

2005-03-22 20:46 | 上山砍柴去

是技术过时了?还是写得太差?

怎么没人留言呢?

回复 引用

2005-03-23 07:43 | none

如果你仔细看看现在网络上的一些论坛,你发现其实这样的功能大家都已做到了,而且已经是很久远的故事了。

回复 引用 查看

2005-03-23 08:04 | 维生素c.net(范维肖)

'定义一个id为main1、main2序列的div标记

class=“menu” width=“100%” >

不对吧..应该是这样吧:

" class="menu" width="100%">

回复 引用 查看

2005-03-23 08:10 | 上山砍柴去

樓上的很仔細,謝謝。

出現這個問題的原因是因為我本來的代碼是asp格式的,貼在word中編輯後又換成html的,所以有點小問題。

回复 引用 查看

2005-03-23 08:49 | format

说句题外话,怎么你的blog会弄些activex控件安装,这样很不好!

回复 引用 查看

2005-03-23 08:52 | 上山砍柴去

咦!是呀,我剛剛自己也看到了,可能是我用了“太極鏈”的原因。我把它取消掉再說。

回复 引用 查看

2005-03-25 09:03 | james wong

搞得不錯啊

回复 引用

2005-07-15 21:25 | gallon[未注册用户]

哥们, 我想让它一开始显示第一个div如何作

谢谢

回复 引用 查看

2005-07-15 21:48 | bonny.wong

回复 引用

2005-07-17 21:43 | gallon[未注册用户]

sorry, 我找到了, 在 initit() 中 写就ok了, 你没测试吧;不过还有一个问题,如何在隐藏或显示后, 能获得 td的高度,

回复 引用

2005-07-21 18:10 | bean_zhw[未注册用户]

很好呀,帮我解决了问题,感谢了 兄弟!!!!!!!!!!!!!

回复 引用

2005-11-07 16:34 | irving[未注册用户]

不错

回复 引用

2009-06-22 17:18 | 为啥[未注册用户]

为啥我看不到右边的 被挡住了

注册用户登录后才能发表评论,请 登录 或 注册,返回博客园首页

首页博问闪存新闻园子招聘知识库

最新it新闻:

·windows 7官方rss动态主题:《昆虫》

·捡到iphone 4s玩自拍 icloud同步酿悲剧

·铁道部购票网站存泄密危险 cdn服务商技术短板是主因

·利用 mimo magictouch 打造另类的平板电脑

·但愿大嘴巴的消息再次失准

» 更多新闻...

最新知识库文章:

·设计师的品牌意识

·如何成为“10倍效率”开发者

·快速排序(quicksort)的javascript实现

·wcf服务端运行时架构体系详解[续篇]

·wcf服务端运行时架构体系详解[下篇]

» 更多知识库文章...

china-pub 2011秋季教材巡展

china-pub 计算机绝版图书按需印刷服务


======================================================
在最后,我邀请大家参加新浪APP,就是新浪免费送大家的一个空间,支持PHP+MySql,免费二级域名,免费域名绑定 这个是我邀请的地址,您通过这个链接注册即为我的好友,并获赠云豆500个,价值5元哦!短网址是http://t.cn/SXOiLh我创建的小站每天访客已经达到2000+了,每天挂广告赚50+元哦,呵呵,饭钱不愁了,\(^o^)/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值