Javascript-форум (https://javascript.ru/forum/)
-   Javascript под браузер (https://javascript.ru/forum/css-html/)
-   -   Смена изображений фона - нет повтора (jquery) (https://javascript.ru/forum/css-html/34256-smena-izobrazhenijj-fona-net-povtora-jquery.html)

dream.reckless 26.12.2012 17:42

Смена изображений фона - нет повтора (jquery)
 
Доброго времени суток и конечно же всех с Новым Наступающим Годом!!

Подскажите пожалуйста, уже устал мучатся, столкнулся про следующей проблемой - есть скрипт, но после показа всех изображений (фон странички), он останавливается. Как этого избежать?



<img  src="" alt="background" id="bg" style="display:none" />
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js"></script> 
<script type="text/javascript" class="noprint">
    var aImages = new Array();
    var aURL = new Array();
    var aArtists = new Array();
    var iPrev = -1;
    var iRnd = -1;
    
    aImages[0] = "fone2.jpg";
    aImages[1] = "fone3.jpg";
    aImages[2] = "fone4.jpg";
    aImages[3] = "fone1.jpg";
        
    
 
 
    $(document).ready(function() {
 
        $("img#bg").load(function()
            {
                
                $("img#bg").fadeTo(2000,1);
                
                        
                
                setTimeout(function() 
                    {
                        $("#image_description").animate({right: '-=150'}, 1000);
                        $("img#bg").fadeOut(2000);
                        
                        
                        setTimeout(LoadImages,2500);
                    }
                    ,3000);
            }           
        )
    
        
        setTimeout(LoadImages,1000);
        
    });
 
    function LoadImage(iNr)
    {
    
        $("img#bg").attr("src", aImages[iNr]);
      
                            
    };
    
    function LoadImages()
    {
        
        /* Select a random image number and make sure this is not equal to the previous image */
        while(iPrev == iRnd)
        {
            iRnd = Math.floor(Math.random()*aImages.length);
 
        }
        
        /* Show the selected image */
        LoadImage(iRnd);
        
        iPrev = iRnd;
        
    };
</script>

Deff 26.12.2012 18:07

Цитата:

Сообщение от dream.reckless
но после показа всех изображений (фон странички), он останавливается.

пробуйте заменить строку 63
LoadImage(iRnd);

на такую
LoadImage(iRnd+"?"+Math.random());

dream.reckless 26.12.2012 18:25

Deff, попробывал, но к сожалению эффекта теперь нет вообще никакого..

dream.reckless 26.12.2012 18:29

Проблему решил следующим способом. Всем спасибо. Правда, если у кого то есть желание, подскажите, почему вообще работает как то странно? То рывками, то пару раз одни и те же картинки меняются по парно...

Для более корректной работы требуется изменить ф-цию:
function LoadImage(iNr)
{
    $("img#bg").attr("src", aImages[iNr]);
    if ($("img#bg").prop('complete'))
    {
        setTimeout(LoadImages,2500);
    };
};

рони 26.12.2012 18:37

Цитата:

Сообщение от dream.reckless
то пару раз одни и те же картинки меняются по парно...

слабый алгоритм рандомизации -- сейчас он лишьбы не предыдущее -- поэтому достаточно 2 картинок

Deff 26.12.2012 18:37

Цитата:

Сообщение от dream.reckless
То рывками, то пару раз одни и те же картинки меняются по парно...

При непрерывном показе,нун делать рандомную ссылку несколько иначе,
Просто рандомно переставляя ссылки в массиве после каждого прогона всего массива(делая проверку, что первый элемент нового массива - не равен последнему исходного массива)
выбор и вставку ссылок делать уже не рандомно, а чисто следущий элемент массива

dream.reckless 26.12.2012 18:38

Прошу прощение, что то я запутался.
То работает, то нет, то рывками, то одни и теже..
Может дело в delay?


Не подскажите, как исправить? Просто к сожалению, опять, я именно из тех кто не особо в javascript разбираться..


Часовой пояс GMT +3, время: 22:38.