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

js全局变量赋值问题
var slideimages=new Array();

function getPhotos(){
JPhoto.getPhoto(callBackImages);
}
function callBackImages(images){
for(var i=0;i<images.length;i++){
slideimages[i]="images/photo/"+images[i].photoSrc;
  alert(slideimages[i]); //函数里有值
}
}
alert(slideimages[0]); //函数外面就没值了

怎么解决让全局数组一直有值

------解决方案--------------------
<script type="text/javascript">
var list = new Array();
function test(){
alert("03");
list.push("111");
alert("04");
list.push("222");
}
function test222(){
alert("01");
test();
alert("02");
alert(list[0]);
alert(list[1]);
}
</script>

在JS中List使用还是比较麻烦的, 别用 list[i]=="**"赋值,用函数push();上面test()给全局list赋值,这样在其他地方就可以获取,当然取之前需要调一下test()...基本思路就是这样,另外你上面的第二个alert(slideimages[0]); //函数外面就没值了 这个地方应该写在function 中,要不怎么调?
给你个网址,里面讲JS操作List听详细的:
http://www.cnblogs.com/qiantuwuliang/archive/2011/01/08/1930499.html

我也是菜鸟,一起努力!!!!

------解决方案--------------------
那是因为你是在函数callBackImages里面对数组进行赋值操作的,而外面的alert执行时,callBackImages并未被调用,此时当然取不到任何值了。
给你小改了下,只是为了说明下问题,无任何实用性
JScript code
        <div id="imageContainer">
            <img src="0.jpg" alt="image" />
            <img src="1.jpg" alt="image" />
            <img src="2.jpg" alt="image" />
        </div>
        <script>
            var slideimages=new Array(),
                images = document.getElementsByTagName("img");
            function callBackImages(images){
                for(var i=0;i<images.length;i++){
                slideimages[i]="images/photo/"+images[i].src;
                  alert(slideimages[i]); //函数里有值
                }
            }
            callBackImages(images);
            alert(slideimages[0]); //函数外面就没值了
        </script>