数组VBScript到JavaScript
我有一个经典的ASP网站,我们使用Flash组件生成图表,通过JavaScript库将此功能结合起来 在同一个ASP页面上,我们读取文本文件,数据保存在数组中,这些数组必须传递给javascript函数。此代码不是函数,因为根据所选菜单,会读取不同的文件。这是一个非常广泛的代码数组VBScript到JavaScript,javascript,arrays,vbscript,asp-classic,charts,Javascript,Arrays,Vbscript,Asp Classic,Charts,我有一个经典的ASP网站,我们使用Flash组件生成图表,通过JavaScript库将此功能结合起来 在同一个ASP页面上,我们读取文本文件,数据保存在数组中,这些数组必须传递给javascript函数。此代码不是函数,因为根据所选菜单,会读取不同的文件。这是一个非常广泛的代码 <% ··· ReDim LisOp (numop) ReDim Lisco (numop) ReDim LisVo (numop) aux = options for i = 1 to numop
<%
···
ReDim LisOp (numop)
ReDim Lisco (numop)
ReDim LisVo (numop)
aux = options
for i = 1 to numop
p = InStr (aux, ",")
if p> 0 Then
LisOp (i - 1) = Left (aux, (p - 1))
Right aux = (aux, (Len (aux) - p))
else
LisOp (i - 1) = aux
aux = ""
end if
Next
···
%>
0那么
LisOp(i-1)=左(辅助,(p-1))
右辅助=(辅助,(透镜(辅助)-p))
其他的
LisOp(i-1)=辅助
aux=“”
如果结束
下一个
···
%>
在这些变量LisOp、Lisco、LisVo中,我们有数据。问题是当我想将此信息传递给javascript时:
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" content="text/html; charset=iso-8859-1">
<META HTTP-EQUIV = "refresh" CONTENT = "<% = TieRefresco%>">
<script type="text/javascript" src="http://www.google.com/jsapi"> </ script>
<script language="JavaScript">
google.load ('visualization', '1 ', {' packages': ['table', 'corechart']});
google.setOnLoadCallback (draw);
function draw () {
var options = {title:'',
legend: {position: "none"},
hAxis: {textstyle: {color: 'black', fontName: 'Arial Black', size: 16}}
};
// Create data table object
var google.visualization.DataTable datat = new (); / / DataTable Roles
// Define columns
datat.addColumn ('string', '<% = tOpciones%>'); / / Implicit domain column.
datat.addColumn ('number', '<% = tVotos%>'); / / Implicit data column.
datat.addColumn ({type: 'string' role: 'style'});
datat.addColumn ({type: 'string' role: 'annotation'});
for (var i = 0; i << numop%% => -1, i + +) {
datat.addRow (['OP1', 450, 'color: green', '450 ']);
}
···
</ Script>
</ HEAD>
<BODY>
···
load('visualization','1',{'packages':['table','corechart']});
google.setOnLoadCallback(draw);
函数图(){
变量选项={title:'',
图例:{位置:“无”},
hAxis:{textstyle:{color:'black',fontName:'Arial black',size:16}
};
//创建数据表对象
var google.visualization.DataTable datat=new();//DataTable角色
//定义列
datat.addColumn('string','');//隐式域列。
datat.addColumn('number','');//隐式数据列。
datat.addColumn({type:'string'角色:'style'});
datat.addColumn({type:'string'角色:'annotation'});
对于(变量i=0;i-1,i++){
datat.addRow(['OP1',450',颜色:绿色,'450']);
}
···
···
在本例中,我将固定值保留给函数addRow,但我需要将在Visual Basic脚本“LisOp,LisVo,LisCo”中创建的数组传递给函数addRow。使用固定值,我可以完美地运行。然后,我将我尝试过但尚未将数组值传递给函数addRow的代码示例放在下面:
我尝试了VBArray(arrayObj)toArray()函数;但它给了我一个错误,我没有生成图形:
var arrayObj;
var jsArray;
arrayObj = LisOp
jsArray = VBArray (arrayObj) toArray ().;
for (var i = 0; i << numop%% => -1, i + +) {
datat.addRow ([jsArray[i], 450, 'color: green', '450 ']);
}
var-arrayObj;
var-jsArray;
arrayObj=LisOp
jsArray=VBArray(ArrayBJ)toArray()。;
对于(变量i=0;i-1,i++){
addRow([jsArray[i],450,'颜色:绿色','450']);
}
我尝试在draw()函数中为VBScript创建循环,但不起作用:
<% For i = 0 to numop%>
datat.addRow ([<%=LisOp(i)%>, <%=LisVo(i)%>, <%=lisCo(i)%>, <%=LisVo(i)%>])
<% Next%>
datat.addRow([,,])
有什么想法吗?我以前只做过一次,我尝试了一系列不同的选择,试图找到可靠可靠的产品 最后,我不得不分解并使用VBA中的一个循环来解构对象,调用JavasScript中的一个函数来重构它 请原谅这种语法,我很久没有使用VBA了——它肯定是错误的
for i = 1 to numop
jsSetLisOp (i, LisOp(i))
jsSetLisCo (i, LisCo(i))
Next
Javascript
// Set up our magic function
var wrapper = (function() {
var arr = [];
function jsSetLisOp(idx, val) {
var o = arr[i] || {};
o.LisOp = val;
}
function jsSetLisCo(idx, val) {
var o = arr[i] || {};
o.LisCo = val;
}
return {
jsSetLisOp: jsSetLisOp,
jsSetLisCo: jsSetLisCo
arr = arr;
};
}());
// Move this to a global level so we can share them with VBA
var jsSetLisOp = wrapper.jsSetLisOp;
var jsSetLisCo = wrapper.jsSetLisCo;
var jsobject = wrapper.arr;
也许,您的问题是生成数据的js引用
<% For i = 0 to numop %>
datat.addRow (['<%=LisOp(i)%>', <%=LisVo(i)%>, '<%=lisCo(i)%>', '<%=LisVo(i)%>']);
<% Next %>
datat.addRow(['','');