繁体   English   中英

如何返回数组

[英]How to return array

我正在使用下面的函数来加载 xml,然后返回带有值的数组。 但是当我在另一个函数中调用它时,它给出了错误“arrXML 未定义”。

function readXML() {
     // create an array object
     var arrXML = new Array();

     //create XML DOM object
     var docXML = Sys.OleObject("Msxml2.DOMDocument.6.0");

     // load xml
     docXML.load("C:\\Users\\ankit\\Desktop\\read.xml");

     // search nodes with 'config' tag
     var Nodes = docXML.selectNodes("//config");
     for (i = 0; i < Nodes.length; i++){
         var ChildNodes = Nodes.item(i);
         arrXML[i] = Nodes(i).childNodes(0).text +":"+Nodes(i).childNodes(1).text;
     }
     // return array of XML elements
     return arrXML; 
}

function getvalues() {
    log.message(arrXML[1]);  // this line gives error
}

arrXML是函数readXML局部readXML因为您在该块中使用var关键字声明了它。 getValues不知道它存在(因为它不再存在)。

您的选择是使变量成为全局变量(您应该小心)

vinu = {}; // vinu is global namespace containing the array
function readXML() {
  vinu.arrXML = [];
  // ...
  return vinu.arrXML; // This might not even be necessary in this case
}

function getvalues() {
  log.message(vinu.arrXML[1]);
}

...或者在调用函数时将变量传递给函数。

function getvalues(arg) {
  log.message(arg[arrXML[1]]);
  return arg; // This function can't change the original variable, so use the return if need-be
}

// Somewhere that has access to the actual "arrXML"
getvalues(arrXML);

...或使用闭包。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM