Tôi đang thiết kế lại một phần của trang web để dễ dàng cập nhật hơn trong tương lai. Hiện tại, nó là một loạt các bảng, được mã hóa cứng. Để thiết kế lại bảng (ví dụ: để sắp xếp theo thứ tự bảng chữ cái như tôi muốn), yêu cầu trao đổi theo cách thủ công xung quanh rất nhiều giá trị trong html.Cách triển khai mảng trong vbscript có kích thước biến là
Đây là những gì tôi muốn làm: Tạo đối tượng url_Link với biến tiêu đề và liên kết, để giữ tên hiển thị và url tương ứng. Tạo một mảng các đối tượng url_Link và điền nó ở đầu tệp .asp cho trang. Thực hiện cho mỗi vòng lặp trên các mảng đó để tạo và điền vào bảng
Bản thân điều này không quá tệ, nhưng tôi gặp phải hai vấn đề. Trước tiên, tôi không muốn phải xác định kích thước mảng, vì điều này làm cho một vị trí thứ hai phải được thay đổi khi thay đổi được thực hiện cho số lượng liên kết. Sẽ có một số logic để ngăn các đối tượng url_Link nhất định hiển thị (ví dụ, một số người dùng không thể truy cập một số trang nhất định, vì vậy họ sẽ không thấy liên kết) và điều này sẽ gây ra sự cố khi định kích thước mảng.
Tôi biết rằng tôi chỉ có thể tạo các mảng có kích thước lớn, nhưng điều này dường như lãng phí đối với tôi (và tôi không biết làm thế nào cho mỗi chức năng và không muốn một loạt các hàng trống hiển thị).
Tôi có thể làm gì để giải quyết những vấn đề này? Tôi không hiểu nhiều về vbscript, và hầu hết đoạn code mà tôi đã làm việc với không tận dụng lợi thế của mảng hoặc đối tượng.
CẬP NHẬT: Tôi đã thử sử dụng tính năng BẢO QUẢN redim để cắt chất béo thừa của một mảng quá khổ. Vấn đề là trong một số trường hợp, mảng của tôi được phổ biến bởi số lượng đối tượng nhỏ hơn kích thước tối đa của nó vì nếu điều kiện. Điều này đang gây ra vấn đề sau này khi tôi sử dụng vòng lặp for (cố gắng để có được một cho mỗi để làm việc và đó là không xảy ra vào lúc này). Tôi nhận được lỗi "mảng này là cố định hoặc tạm thời khóa" trên dòng ReDim
Code:
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)
"Dim a (1)" tạo một mảng cố định (không có thể xác định lại) với 2 phần tử được lập chỉ mục 0 và 1. Sử dụng "Dim a: a = Array()" hoặc "ReDim a (-1)" để tạo một mảng ReDim-có thể trống. –