日期:2014-05-16  浏览次数:20507 次

js的全局变量的问题
我在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();这个定义的不对吗?
js? JavaScript 全局变量

------解决方案--------------------
我也遇到过这样的问题
 你先
 var a,b;//声明;
再写一个function func(){
   a=new Array(); //声明;

最后在<body onload="func()">加载这个函数;
原因:你的a,b在全局变量赋的值还没有加载,这样你查找到的结果是null,你先声明在赋值 将赋值在加载以后,就可以解决了,因为加载的顺序问题;