无法读取返回值

时间:2015-06-04 06:56:56

标签: javascript

下面的代码不是在函数matchValue()中读取readXML()的返回值。在行Log.Message(myarr [1,1]);

中给出错误
function readXML()
{
    var myarr;  
    var doc = Sys.OleObject("Msxml2.DOMDocument.6.0");
    doc.load("C:\\Users\\sumit\\Desktop\\sfsd.xml");
    var Nodes = doc.selectNodes("//config");

    for (i = 0; i < Nodes.length; i++){
        var ChildNodes = Nodes.item(i);

        myarr = new Array();
        myarr[i,i] = [Nodes(i).childNodes(0).text, Nodes(i).childNodes(1).text];
        Log.Message(myarr[i,i]);

    } 
    return myarr;
}

function matchValue()
{
 readXML();
 Log.Message(myarr[1,1]);
}

4 个答案:

答案 0 :(得分:1)

在调用readXML()

时,您忽略了matchValue()的结果

将其保存在另一个变量中以便能够使用结果

var result = readXML()

答案 1 :(得分:1)

您无法访问readXML()matchValue()的变量。因为matchValue() myarr[1,1]中不存在该变量会产生错误。

尝试将返回值存储在如下变量中:

var array = readXML();
Log.Message(array[1,1]);

答案 2 :(得分:0)

您的代码中有两个主要问题。

1。范围

如果您想以myarr的方式访问

Log.Message(myarr[1,1]);

你必须在全局命名空间中声明它(根据推荐,绝对没有必要)。

相反,请这样:

function matchValue() {
    Log.Message(readXML()[1,1]);
}

2。访问多维数组的语法

但即使这解决了范围问题,您访问myarr的语法也是错误的。要实现您的目标,您必须创建一个外部数组,其成员也是数组。这样你就可以访问&#34; D&#34;在此示例中,采用以下方式:

var myarr = [ "A", [ "B", "C" ], [ "D", "E" ] ];
console.log(myarr[2][0]);

myarr[2][0]会发生什么?

  1. myarr[2]访问外部数组并返回["D", "E"]
  2. 然后,["D", "E"][0]访问内部数组中的第一个数组成员。

答案 3 :(得分:0)

此处myarrreadXML()方法局部变量。所以你无法从外面访问。

你可以这样做

var array = readXML();
Log.Message(array[1,1]);

(或)其他替代方案(不推荐):

myarray设为全局变量,并使用matchValue()方法访问它。

  

如果为尚未声明的变量赋值,它将自动成为GLOBAL变量。