我在A.js中定义一个数组,然后想在B.js中读取这个数组中的值,但是没法读取到。
A .js中的代码:
var positions = new Array();
function OnLButtonUp() {
try {
var SGWorld = _$SGCreateTEObj();
var pos = SGWorld.Navigate.GetPosition(3);
positions.push(pos);
//alert(positions.length);这里用alert调试的话,数组的值是有的
}
catch (e) {
alert('温馨提示:' + 'OnLButtonUp()方法存在'+e.name+'异常, '+e.message);
}
}
B.js中想读取:
var j = 0;
function GetBack() {
debugger;
var SGWorld = _$SGCreateTEObj();
var stepLength = positions.lenght - 1;//这里报错,说positions没有定义
if (j < positions.length) {
SGWorld.Navigate.JumpTo(positions[stepLength - 1 - j]);
j++;
}
}
之前我也遇到过这样的问题。发现全局变量不起作用。这是什么原因呢?是我var positions = new Array();这个定义的不对吗?
在b.js文件中,调用a.js文件中的方法,之后你得把数组(也就是执行结果)进行返回,即return positions; 这样就行了,你试试,期待你的好消息
是文件引用顺序问题?
引用的时候我注意到了,我是先引用A.js,后面才是引用B.js。
你可以试着将这两个js放在同一个js中,调用同一个js就不会出现问题。
你应该在调用GetBack()方法之前,先调用OnLButtonUp(),这样数组里就会被赋值了。