下面的代码不是在函数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]);
}
答案 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)
如果您想以myarr
的方式访问
Log.Message(myarr[1,1]);
你必须在全局命名空间中声明它(根据不推荐,绝对没有必要)。
相反,请这样:
function matchValue() {
Log.Message(readXML()[1,1]);
}
但即使这解决了范围问题,您访问myarr
的语法也是错误的。要实现您的目标,您必须创建一个外部数组,其成员也是数组。这样你就可以访问&#34; D&#34;在此示例中,采用以下方式:
var myarr = [ "A", [ "B", "C" ], [ "D", "E" ] ];
console.log(myarr[2][0]);
myarr[2][0]
会发生什么?
myarr[2]
访问外部数组并返回["D", "E"]
。["D", "E"][0]
访问内部数组中的第一个数组成员。答案 3 :(得分:0)
此处myarr
是readXML()
方法局部变量。所以你无法从外面访问。
你可以这样做
var array = readXML();
Log.Message(array[1,1]);
(或)其他替代方案(不推荐):
将myarray
设为全局变量,并使用matchValue()
方法访问它。
如果为尚未声明的变量赋值,它将自动成为GLOBAL变量。