我正在重新设计网页的一部分,以便将来更容易更新.目前,它是一系列硬编码的表.要重新设计表格(例如,按照我想要的方式按字母顺序排列),需要手动交换html中的很多值.
这就是我想做的事情:
创建一个带有标题和链接变量的url_Link对象,分别保存显示名称和URL.
创建一个url_Link对象数组,并将其填充到页面的.asp文件的顶部.
对这些阵列上的每个循环执行a以构建和填充表
这本身并不是那么糟糕,但我遇到了两个问题.
首先,我不想定义数组大小,因为当对链接数进行更改时,这需要更改第二个位置.
将存在一些逻辑来阻止显示某些url_Link对象(例如,某些用户无法访问某些页面,因此他们将看不到链接),这会在调整数组大小时引起问题.
我知道我可以制作一个大尺寸的数组,但这对我来说似乎很浪费(我不知道每个函数如何,也不希望出现一堆空行).
我该怎么做才能解决这些问题?我对vbscript知之甚少,而且我一直在使用的大部分代码都没有利用数组或对象.
更新:
我已经尝试使用redim PRESERVE来修剪超大阵列的多余脂肪.问题是在某些情况下,由于if条件,我的数组中填充的对象数量少于其最大大小.当我使用for循环时,这会导致问题(尝试为每个循环工作并且目前没有发生).我在redim行上收到错误“此数组已固定或暂时锁定”
码:
dim systemSettingsArray(1) arrayCounter = 0 if ADMIN = "Y" then set systemSettingsArray(arrayCounter) = (new url_Link).Init("Account Administration","Maintenance/Account_Admin.asp") arrayCounter = arrayCounter + 1 end if set systemSettingsArray(arrayCounter) = (new url_Link).Init("Time Approval","Maintenance/system_Time_Approval.asp") redim Preserve systemSettingsArray(arrayCounter)
解决方法
在数组上使用redim preserve.您可以使用UBound查找当前的元素数量并执行类似的操作
ReDim Preserve myArrayName (UBound(myArrayName) + 1)
http://msdn.microsoft.com/en-us/library/c850dt17%28v=vs.84%29.aspx