Skip navigation.

永远的亚特兰缔斯

To record my thinking and study note

分类数据动态生成Javascript数组

,

参照文章关于无限分级的一种算法思路中,我们取得了无限分级的数据,在某些时候需要频繁的调用该数据,并且分级类别(菜单项)多的时候,如果用Asp实现,则会增加服务器负担。一种解决的方式是把数据库中的数据生成一个Javascript数组,然后用Javascript数组来替代调用它;当然,你也可以把Javascript数组数据生成为一个Js文件,方便其他相关文件调用。

代码如下:

'*************************************
'Coded By hooline 2006.6.7
'Email:hooline#gmail.com
'Msn:peace.zhou#msn.com
'功能:生成Javascript数组
'**************************************
function PrintClassToJs(ParentId,ChildId)
  dim objRs,strSql,i
  dim strSpace
  set objRs=server.CreateObject("adodb.recordset")
  strSql="Select * from tClass where ParentId="&ParentId&""
  objRs.Open strSql,objConn,3,1
  if not objRs.EOF then
       strSpace=""
       while not objRs.EOF
          for i=1 to ChildId-1
             strSpace=strSpace+"--"
          next
          response.write "strClass["&j&"]=new Array();"&Vbcrlf
  response.write "strClass["&j&"][0]='"&objRs("id")&","&objRs("ChildId")+1&"';"&Vbcrlf
  response.write "strClass["&j&"][1]='"&strSpace&objRs("ClassName")&"';"&Vbcrlf  
  j=j+1
   PrintClassToJs objRs("id"),ChildId+1
          objRs.MoveNext
  strSpace=""
        wend
  end if
  objRs.Close
  set objRs=nothing
end function


在欲调用Javascript数组的代码前加入如下代码:

<script type="text/javascript">
/*-------------------------------
把分级数据从数据库中放到Javascript数组中
Code By hooline 2006.6.7
Email:hooline#gmail.com
Msn:peace.zhou#msn.com
---------------------------------*/
var strClass=new Array();
<%public j:j=0:PrintClassToJs 0,1%>
function Pz_WriteClass(){
for (var i=0;i<strClass.length;i++){
    document.write ("<option value="+strClass[i][0]+">"+strClass[i][1]+"<\/option>");
}
}
</script>


如何调用(调用方式):

<select name="ClassList" id="ClassList">
   <option value="0,1">顶级分类</option>
   <script type="text/javascript">Pz_WriteClass();</script>
</select>


说明:
1.由于该调用是在select标签中实现的,基于你自己的调用方式,你可以修改PrintClassToJs函数和Pz_WriteClass函数中的相关代码,以实现自己的调用方式。
2.关于把该数组生成Js文件的功能,用Fso就可以实现,这里就不写了。

一种Javascript加载页面Onload的方法ADO中游标类型及常量说明

Write a comment

You must be logged in to write a comment. If you're not a registered member, please sign up.

December 2009
S M T W T F S
November 2009January 2010
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31