Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Повторить выполнение скрипта (https://javascript.ru/forum/misc/39163-povtorit-vypolnenie-skripta.html)

Sam L 18.06.2013 15:37

Повторить выполнение скрипта
 
Есть скрипт:

$(document).ready(function () {

    var image1 = new Image();
    image1.src = "img/1.png";
    
    var image2=new Image();
    image2.src = "img/2.png";
    
    var image3=new Image();
    image3.src = "img/3.png";
    
    var step =1


    $("#tap").click(function () {
        setInterval(slideit, 20);
        });

    function slideit() {

        if (step<3){
         document.images.slide.src = eval("image" + step + ".src");

            step++ }
    }
});


По клику три картинки меняются. Что изменить, чтобы при повторном клике на #tap срабатывал slideit?:-?

animhotep 18.06.2013 15:58

сделать step локальней
$(document).ready(function () {

    var image1 = new Image();
    image1.src = "img/1.png";
    
    var image2=new Image();
    image2.src = "img/2.png";
    
    var image3=new Image();
    image3.src = "img/3.png";
    
   


    $("#tap").click(function () {
        setInterval(slideit, 20);
        });

    function slideit() {
        var step =1
        if (step<3){
         document.images.slide.src = eval("image" + step + ".src");

            step++ }
    }

});

Sam L 18.06.2013 16:14

пробовал, но картинки не меняются - step++ не срабатывает..

ruslan_mart 18.06.2013 16:39

$(function () {

    image1 = new Image();
    image1.src = "img/1.png";
    
    image2 = new Image();
    image2.src = "img/2.png";
    
    image3 = new Image();
    image3.src = "img/3.png";

    $("#tap").click(function () {
        setInterval(slideit, 20);
    });
});

var step = 1;

function slideit() {
if(step > 2) step = 1;
if (step < 3){
   document.images.slide.src = window['image' + step].src;
   step++; }
}


Можно так попробовать :)

Sam L 18.06.2013 16:56

так картинки будут непрерывно меняться, а хотелось бы, чтобы каждый раз на клик три менялись и останавливались...

danik.js 18.06.2013 17:04

Цитата:

Сообщение от Sam L
По клику три картинки меняются. Что изменить, чтобы при повторном клике на #tap срабатывал slideit?

Он и так срабатывает. setInterval же установили. Но работает после step > 3 в холостую. Нужно сбрасывать step на единицу.
А еще eval is evil.

danik.js 18.06.2013 17:10

$(document).ready(function () {
    var images = ["img/1.png", "img/2.png", "img/3.png"];
    for (var i = 0; i < images.length; i++)
        new Image().src = images[i];
        
    var step, timerId;
    
    $("#tap").click(function () {
        step = 1;
        timerId = setInterval(slideit, 20);
    });

    function slideit() {
        if (step < 3){
           document.images.slide.src = images[step - 1];
           step++;
        } else {
           clearInterval(timerId);
        }
    }
});

Sam L 18.06.2013 17:20

cпасибо! ну и с eval и setInterval теперь все понятно :)


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