Глобальная переменная javascript не работает с внешним файлом js

Я объявил следующую переменную вне внешнего 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);
    }));
}

1 ответ

Решение

Идет ли тег сценария для внешнего файла js перед var images=... встроенный тег сценария?

Браузеры выполняют код в том порядке, в котором они их видят, поэтому, если внешний js-файл будет виден первым, он выполнит функцию doSlideShow(), которая может вызвать функцию slideshowFadeIn(), которая будет пытаться ссылаться на несуществующий объект. переменная

Другие вопросы по тегам