在经典 ASP 中将 VBScript 数组转换为 Java 脚本数组



我有一个用VB脚本编写的经典ASP页面,并且有一个脚本标签,使用Java脚本如下。

我正在尝试使用 for 循环将 VB 脚本数组(代码列表(转换为 Java 脚本数组(可用代码(,但 VB 脚本数组的第一行一直被强制转换为 Java 脚本数组的每一行。

$(document).ready( function(){
var availableCode = new Array();
for (idx=0; idx < 3; idx++) 
{ 
availableCode[idx]=<%=codeList(idx)%>;
alert (idx);
alert (<%=codeList(idx)%>);
alert (availableCode[idx]);
}
});

我也尝试了以下内容,但出现语法错误。

availableCode[idx]=<%=codeList(%> idx <%)%>;

谁能建议如何铸造预期值?谢谢。

我认为你需要反过来做,即在VBScript中创建你的索引(idx(,然后将其写入Javascript:

$(document).ready( function(){
var availableCode = new Array();
<%
dim idx
for idx = 0 to UBound(codeList)
%>  
availableCode[<%=idx %>] = <%= codeList(idx) %>;
alert (<%= idx %>);
alert (<%= codeList(idx) %>);
alert (availableCode[<%= idx %>]);
<% next %>
});

如果 codeList 的元素是字符串值,则需要引用以防止 JavaScript 错误

$(document).ready( function(){
var availableCode = new Array();
<%
dim idx
for idx = 0 to UBound(codeList)
%>  
availableCode[<%=idx %>] = '<%= codeList(idx) %>'; // quote here
alert (<%=idx %>);
alert ('<%= codeList(idx) %>'); // quote here
alert (availableCode[<%= idx %>]);
<% next %>
});

我相信您遇到的问题是 idx 在服务器端 (VBScript( 上不存在,因此当在此语句中使用时<%= codeList(idx) %>,idx 被隐式转换为 0。因此始终返回codeList(0)中的值。

您可以使用 Join(( 输出数组: 这也将使客户端代码更加紧凑。

$(document).ready( function(){
var availableCode = ['<%=Join(codeList, "','")%>'];

最新更新