2011-03-08 23 views
0

我已经在外部js文件之外声明了以下变量,因为它的一部分是生成服务器端的。javascript全局变量不能与外部js文件一起工作

<script type="text/javascript"> 
    var images=new Array(<%= Master.slideshowArray %>); 
</script> 

出于某种原因,从外部js文件(下)幻灯片不再工作......我猜我犯了一个错误,宣布它作为一个全局变量,或者也许还有别的删除此我需要宣布全球...任何想法?

var nextimage=0; 

doSlideshow(); 

function doSlideshow() 
{ 
    if($('.backgroundImage').length!=0) 
    { 
     $('.backgroundImage').fadeOut(500,function(){slideshowFadeIn();$(this).remove();}); 
    } 
    else 
    { 
     slideshowFadeIn(); 
    } 
} 

function slideshowFadeIn() 
{ 
    if(nextimage>=images.length) 
     nextimage=0; 

    $('.homeLeadContent').prepend($('<img class="backgroundImage" src="'+images[nextimage++]+'" style="display:none;">').fadeIn(500,function() { 
     setTimeout(doSlideshow,1000); 
    })); 
} 
+0

DOM已经定义了一个名为'images'的全局变量。你尝试过不同的名字吗? – RoToRa 2011-03-08 09:50:23

+0

尝试将图像更改为myimages ...仍然没有喜悦。 – Tom 2011-03-08 10:11:32

+0

生成的内联脚本标记是什么样的?你确定没有语法错误导致脚本标签无法执行吗? – 2011-03-08 10:59:10

回答

1

var images=...联脚本标记之前不来的外部js文件的脚本标签?

浏览器按照它们看到的顺序执行代码,因此如果首先看到外部js文件,它将执行可能调用slideshowFadeIn()的doSlideShow()函数,该函数会尝试引用不存在的-at-that-point images可变。

+0

不...内联脚本标记首先是var图像,然后是外部文件... – Tom 2011-03-08 10:06:36

+0

如果在'var images = ...'之后的行上执行'alert(typeof(images));',你会得到一个警告,显示'对象'或什么犹太洁食,即你不想看到'未定义'? – 2011-03-08 10:11:16

+0

因此,如果我看到'未定义'(我做了),接下来要做什么......? – Tom 2011-03-08 10:20:44