2013-06-02 2 views
0

Я в настоящее время таймер обратного отсчета, который Обновляет изображение каждые 30 секунд. Этот код работает хорошо для меня.Многочисленные функции в разное время под одной setInterval (функция()

<script type="text/javascript"> 
jQuery(document).ready(function() { 
var countdown = 30; 
jQuery('#countdown').html(countdown); 
setInterval(function() { 
    countdown--; 
    jQuery('#countdown').html(countdown); 
      if (countdown <= 0) 
    { 
     jQuery('.imagerefresh').attr('src', jQuery('.imagerefresh').attr('src')); 
     countdown = 30; 
     jQuery('#countdown').html(countdown); 
      } 
}, 1000); 
}); 
</script> 

Пытаюсь чтобы добавить код ниже, чтобы получить новое изображение с отметкой 10 секунд и сохранить его локально на сервере. Когда я добавлю его в код выше (до строки 7, «if (обратный отсчет < = 0)»), кажется, что получить новое изображение и сохранить его в порядке на отметке 10 секунд, но при обновлении изображения через 0 секунд изображение, кажется, обновляется, а затем сразу же сворачивается на себя.

if (countdown <= 10) 
{ 
    jQuery.get('/path/to/file/getnewimage.php'); 
} 

Предложения по устранению обвала изображения? Или предложения по более эффективному коду, чтобы получить новое изображение, прежде чем обновлять его на странице. Благодарю.

+0

Я бы даже не дождался 20-го числа вашего обратного отсчета, чтобы получить изображение. Я сразу же предварительно загружу его, когда вы обновите текущее изображение и просто сохраните его в памяти, пока он не понадобится в следующий раз, когда обратный отсчет закончится. О рушится ... любая живая демонстрация, которую вы можете предложить для визуализации проблемы? – Kiruse

+0

Я не знаю, что вы подразумеваете под «коллапсом на себе», но в отношении вашего метода добавления строки запроса?? 'В конец URL-адреса, второго и последующих раз в течение цикла, который вы закончите с дополнительными вопросительными знаками и метками времени в конце URL-адреса, т. е. URL-адрес будет становиться все длиннее и длиннее. – nnnnnn

+0

@BZCS, вы нашли мой ответ полезным? – coma

ответ

0

насчет остановки с помощью setInterval (http://www.youtube.com/watch?feature=player_detailpage&v=i_qE1iAmjFg#t=462s):

http://jsfiddle.net/coma/2Jaqy/7/

$(function() { 

    var max = 30; 
    var countdown = max; 
    var img = $('#image'); 
    var display = $('#countdown'); 

    img.load(function(event) { 

     setTimeout(refresh, 1000); 

    }); 

    var load = function(url) { 

     var ts = (new Date()).getTime(); 
     img.attr('src', url + '?ts=' + ts); 

    }; 

    var get = function() { 

     //$.get('/path/to/file/getnewimage.php', load); 
     setTimeout(function() { 

      load('http://lorempixel.com/400/200/'); 

     }, 500); 

    }; 

    var refresh = function() { 

     display.text('wait ' + countdown + ' seconds...'); 
     countdown--; 

     if(countdown < 0) { 

      countdown = max; 
      get(); 

     } else { 

      setTimeout(refresh, 1000); 

     } 

    }; 

    get(); 

}); 

и заботясь о загрузке изображения.

+0

Спасибо за видео-ссылку, очень полезно - но не смог заставить вышеуказанный код работать в моем случае. – BZCS

+0

Посмотрите сейчас! – coma

+0

У меня все еще проблема с изображением, которое не отображается при обновлении («рушится», как я имел в виду в исходном коде). Мне также нужно будет указать, как координата изображения получает код для кода отображения изображения, поскольку в настоящее время он отображается до того, как изображение успело полностью загрузить (я вижу это в настоящее время при загрузке начальной страницы). – BZCS