数组VBScript到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

我有一个经典的ASP网站,我们使用Flash组件生成图表,通过JavaScript库将此功能结合起来

在同一个ASP页面上,我们读取文本文件,数据保存在数组中,这些数组必须传递给javascript函数。此代码不是函数,因为根据所选菜单,会读取不同的文件。这是一个非常广泛的代码

 <%
···

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(['','');