如何返回数组

时间:2015-06-09 04:17:58

标签: javascript testcomplete

我使用下面的函数加载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
}

1 个答案:

答案 0 :(得分:0)

arrXML是函数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);

...或使用封闭。