Случайные изображения Javascript/JQuery повторяются

У меня есть галерея изображений, которая извлекает случайные изображения из папки images/flip_images/. Файлы имеют имена в виде числа, а затем .jpg, например. 0.jpg, 1.jpg и т. д. Есть 14 изображений, помеченных от 0 до 13, которые он может выбрать. нравится избегать. Я использую Javascript для создания случайных имен файлов изображений и передачи переменных в команду JQuery .flip().

Я попытался использовать цикл do while в приведенном ниже коде, чтобы изменить глобальную переменную, сравнить глобальную переменную с другими и выбрать другой номер, если номер, который он выбрал в первую очередь, уже используется. Однако я не могу заставить это работать. Это проблема области или я только что сделал простую ошибку в коде? Вот код:

var randomNumber0= 0;
var randomNumber1= 1;
var randomNumber2= 2;
var randomNumber3= 3;

var refreshId0 = setInterval(function(){

    var $this = $(this);

    do {

        randomNumber0=Math.floor(Math.random()*14)

    }while(randomNumber0 == randomNumber1 || randomNumber0 == randomNumber2 || randomNumber0 == randomNumber3){

        randomNumber0=Math.floor(Math.random()*14)

    };

    $("#flipboxa").flip({       
        direction: 'lr',
        color: "transparent",
        content: '<img src="images/flip_images/'+randomNumber0+'.jpg" width="120" height="275" alt="alt tag here" />',
    });

    return false;

}, 5000);

var refreshId1 = setInterval(function(){

    var $this = $(this);

    do {

        randomNumber1=Math.floor(Math.random()*14)

    }while(randomNumber1 == randomNumber0 || randomNumber1 == randomNumber2 || randomNumber1 == randomNumber3){

        randomNumber1=Math.floor(Math.random()*14)

    };  

    $("#flipboxb").flip({       
        direction: 'rl',
        color: "transparent",
        content: '<img src="images/flip_images/'+randomNumber1+'.jpg" width="120" height="275"  alt="alt tag here" />',
    });

    return false;

}, 6000);

var refreshId2 = setInterval(function(){

    var $this = $(this);

    do {

        randomNumber2=Math.floor(Math.random()*14)

    }while(randomNumber2 == randomNumber0 || randomNumber2 == randomNumber1 || randomNumber2 == randomNumber3){

        randomNumber2=Math.floor(Math.random()*14)

    };

    $("#flipboxc").flip({       
        direction: 'lr',
        color: "transparent",
        content: '<img src="images/flip_images/'+randomNumber2+'.jpg" width="120" height="275" alt="alt tag here" />',
    });

    return false;

}, 7000);

var refreshId3 = setInterval(function(){

    var $this = $(this);

    do {

        randomNumber3=Math.floor(Math.random()*14)

    }while(randomNumber3 == randomNumber0 || randomNumber3 == randomNumber1 || randomNumber3 == randomNumber2){

        randomNumber3=Math.floor(Math.random()*14)

    };  

    $("#flipboxd").flip({       
        direction: 'rl',
        color: "transparent",
        content: '<img src="images/flip_images/'+randomNumber3+'.jpg" width="120" height="275"  alt="alt tag here" />',
    });

    return false;

}, 8000);

person Phil Young    schedule 12.12.2011    source источник


Ответы (1)


Это не правильная форма do..while

do {

    //something

}while(...){

    //something else

};  

Попробуйте это так:

do {
    //something
}
while(...);
person Naftali aka Neal    schedule 12.12.2011
comment
@PhilFaceplantYoung рад помочь :-D - person Naftali aka Neal; 12.12.2011