仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 423|回复: 8
打印 上一主题 下一主题

[学习教程] ASP教程之使用ASP剧本制造异步装载的树形布局(二...

[复制链接]
小女巫 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 23:17:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
楼上说交互性不好,太牵强了吧。在微软提供的一套框架中,利用asp做网站,开发效率高,使用人数少,减少不必要的开销。交互性是互动方式,是有开发人员决定的。剧本|异步3、客户端代码

  上面是程序的启动页面Tree.htm:

 <HTML>
 <SCRIPTSRC="Renderer.js"LANGUAGE="JavaScript"></SCRIPT>
 <HEAD></HEAD>
 <BODYID=bodyTreeNAME="bodyTree"OnLoad="GetTree();">
 <IFRAMEID=GetDataSTYLE="display:none"></IFRAME>
 </BODY>
 </HTML>
  该页面装载时将实行Renderer.js中的GetTree函数。HTML代码中的IFRAME部分完成了客户端和服务器真个通信机制。JavaScript函数GetTree的代码以下:

 functionGetTree(){
 if(event.type=='load'){
 if(typeof(divTree0)!='object')
 GetData.window.location.href='GetTreeData.asp?Level=0';
 }else{
 try{
 objManip=eval('divTree'+event.srcElement.getAttribute('ElementId'));
 if(objManip.style.display=='none'){
 objManip.style.display='';
 }else{
 objManip.style.display='none';
 }
 }catch(e){
 GetData.window.location.href='GetTreeData.asp?Level='+event.srcElement.getAttribute('ElementId');
 }
 event.cancelBubble=true;
 }
 }
  当文档装载时,onload事务被触发,GetTree函数得以实行。函数反省容器divTree0是不是存在,并为IFRAME(ID为GetData)读取第一层节点(这些节点的父节点ID为0)。如前所述,一切的节点都必需处置鼠标单击事务,并且事务句柄都是GetTree函数。当某个节点(如div1)吸收到一个鼠标事务时,程序将实行GetTree函数中的else部分。假如发送该事务的节点已读取了子节点,则程序反省这些子节点是不是已显现,然后切换子节点的显现形态,从而完成了该层节点的扩大或折叠效果。反省子节点是不是显现的if语句封装在一个try块内,因而当子节点不存在时,程序将实行catch部分,挪用服务器剧本GetTreeData.asp读取子节点内容。最初,程序设置event.cancelBubble=true,目标是克制上一层容器处置该事务。

  服务器剧本GetTreeData.asp前往的HTML代码类如:

 <HTML>
 <BODYOnLoad="parent.PopulateTree('1|0|节点1|2|0|节点2|3|0|节点3|4|0|节点4|');">
 </BODY>
 </HTML>
  能够看到,这里的Onload事务又挪用了别的一个JavaScript函数PopulateTree。PopulateTree函数代码以下:

 functionPopulateTree(strData){
 vararrSplitData;
 variCnt;
 varobjTempDiv;
 varobjMainDiv;
 
 if(strData=='')return;
 arrSplitData=strData.split("|");
 
 objMainDiv=document.createElement('DIV');
 objMainDiv.id='divTree'+arrSplitData[1];
 objMainDiv.style.CSSText='position:relative;left:10px;cursor:hand;';
 for(iCnt=0;iCnt<arrSplitData.length-1;iCnt+=3){
 objTempDiv=document.createElement('<DIVOnClick='GetTree()'OnSelectStart='returnfalse;'>');
 objTempDiv.id='div'+arrSplitData[iCnt];
 objTempDiv.innerHTML=arrSplitData[iCnt+2];
 objTempDiv.setAttribute('ElementId',arrSplitData[iCnt]);
 objTempDiv.setAttribute('ParentElementId',arrSplitData[iCnt+1]);
 objTempDiv.style.cssText='position:relative;cursor:hand;color:red;width:100px;font-size:x-small;';
 objMainDiv.appendChild(objTempDiv);
 }
 if(arrSplitData[1]=='0')
 document.body.appendChild(objMainDiv);
 else
 eval('div'+arrSplitData[1]).appendChild(objMainDiv);
 }
  我们已晓得,PopulateTree函数由onLoad事务挪用,它的参数是一个字符串,好比上例中的“1|0|节点1|2|0|节点2|3|0|节点3|4|0|节点4|”,它是一个“节点标识|父节点标识|节点文本|……”的列表。

  假如某个节点不含子节点,则该参数是一个空字符串,此时PopulateTree间接前往。假如子节点存在,则能够使用split函数将子节点列表以数组情势保留。再接上去,就能够创立该层节点的容器,好比divTree0,然后遍历数组创立各个节点,如div1,div2……。假如某个节点的父节点ID为0,申明该节点没有父节点,程序将把容器divTree0到场文档的BODY;不然当该节点的父节点ID不为0,则创立与其父节点对应的容器“divTree<<父节点ID>>”。在创立节点的同时指定了鼠标单击事务的句柄GetTree函数。

  注:能够修正GetTreeData.asp,使其前往的子节点列表(即PopulateTree的参数)情势为“节点ID|节点文本|……”,也就是省略父节点ID,由于任何一组子节点列表其父节点老是不异的。同</p>ASP一般认为只能运行在IIS上,正如前面所提到的,这并不是十分正确,事实上,ASP也能运行在Apache上。ApacheASP可在任意Apache服务器上运行有限的ASP功能,所需做的,只需打开mod_perl。
山那边是海 该用户已被删除
沙发
发表于 2015-1-20 08:59:58 | 只看该作者
以HTML语言整合(HTML负责界面上,ASP则负责功能上)形成一个B/S(浏览器/服务器)模式的网页程序。
透明 该用户已被删除
板凳
发表于 2015-1-28 15:54:54 | 只看该作者
弱类型造成潜在的出错可能:尽管弱数据类型的编程语言使用起来回方便一些,但相对于它所造成的出错几率是远远得不偿失的。
变相怪杰 该用户已被删除
地板
发表于 2015-1-31 12:02:48 来自手机 | 只看该作者
我就感觉到ASP和一些常用的数据库编程以及软件工程方面的思想是非常重要的。我现在也在尝试自己做网页,这其中就用到了ASP,我想它的作用是可想而知的。
因胸联盟 该用户已被删除
5#
发表于 2015-2-6 19:14:54 | 只看该作者
代码逻辑混乱,难于管理:由于ASP是脚本语言混合html编程,所以你很难看清代码的逻辑关系,并且随着程序的复杂性增加,使得代码的管理十分困难,甚至超出一个程序员所能达到的管理能力,从而造成出错或这样那样的问题。
飘飘悠悠 该用户已被删除
6#
发表于 2015-2-18 09:01:10 | 只看该作者
掌握asp的特性而且一定要知道为什么。
老尸 该用户已被删除
7#
发表于 2015-3-6 01:48:53 | 只看该作者
ASP.Net摆脱了以前ASP使用脚本语言来编程的缺点,理论上可以使用任何编程语言包括C++,VB,JS等等,当然,最合适的编程语言还是MS为.NetFrmaework专门推出的C(读csharp),它可以看作是VC和Java的混合体吧。
分手快乐 该用户已被删除
8#
发表于 2015-3-12 18:29:33 | 只看该作者
代码的可重用性差:由于是面向结构的编程方式,并且混合html,所以可能页面原型修改一点,整个程序都需要修改,更别提代码重用了。
兰色精灵 该用户已被删除
9#
发表于 2015-3-20 01:28:32 | 只看该作者
那么,ASP.Net有哪些改进呢?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2025-1-9 02:05

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表