简体   繁体   中英

How to return array

I am using the below function to load xml and then return the array with values. But when i call it in another function it gives error "arrXML is undefined".

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 is local to the function readXML because you declared it with the var keyword inside that block. getValues has no idea it exists (because it no longer does).

Your options are to make the variable global (which you should be careful with)

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]);
}

... or to pass the variable to the function when you call it.

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);

... or use a closure.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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