2016-12-11 3 views
1

Мне нужна помощь в отсрочке выполнения моего javascript. (Не делая javascript для выполнения сразу после загрузки веб-страницы) Я хочу выполнить javascript только через 10 секунд после того, как веб-страница будет загружен. Как я могу это сделать? Это сценарий.JavaScript - Задержка выполнения определенного javascript

<script> 
    var interval = 10000; 
    var current_index = -1; 
    var sales_feeds = []; 
    var showtime = 5000; 
     <?php $s = get_option('wc_feed_delay_between_popups_appear'); 
     if (!$s) { 

      $s = 5000; 
     } 
     ?> 
    function hide_prev_feed_notify(index) 
    { 
     if(sales_feeds.eq(current_index).length > 0) 
     { 
      sales_feeds.eq(current_index).animate({bottom: '-90px'}, 500); 
     } 
    } 
    function show_live_feed_notify(index) 
    { 
     sales_feeds.eq(index).animate({bottom: '10px'}, 1000); 

     current_index = index; 
    } 
    function show_next_live_notify() 
    { 
     if((current_index + 1) >= sales_feeds.length) 
     { 
      current_index = -1; 
     } 

     //add randomness 
     current_index = (Math.floor(Math.random() * (sales_feeds.length + 1))) - 1;; 

     if(window.console) 
      console.log('will show ' + (current_index+1)); 

      show_live_feed_notify(current_index + 1); 
      setTimeout(function() { hide_prev_feed_notify(current_index + 1); }, showtime); 
    } 
    function stop_live_notify() 
    { 
     removeInterval(inverval); 
    } 
    function readCookie(name) 
    { 
     var nameEQ = escape(name) + "="; 
     var ca = document.cookie.split(';'); 
     for (var i = 0; i < ca.length; i++) 
     { 
      var c = ca[i]; 
      while (c.charAt(0) === ' ') c = c.substring(1, c.length); 
      if (c.indexOf(nameEQ) === 0) return unescape(c.substring(nameEQ.length, c.length)); 
     } 
     return null; 
    } 
    jQuery(function() 
    { 
     jQuery('.wc_feed_close_btn').click(function() 
     { 
      var days = 30; 
      var date = new Date(); 
      date.setTime(date.getTime() + (days *24 *60 *60 *1000)); 
      if(window.console) 
       console.log(date.toGMTString()); 
      document.cookie = 'wc_feed_closed=true; expires=' + date.toGMTString() + ';'; 
      jQuery('.live-sale-notify').css('display', 'none'); 
      clearInterval(interval); 
      return false; 
     }); 

     sales_feeds = jQuery('.live-sale-notify'); 

     show_next_live_notify(); 
     interval = setInterval(show_next_live_notify, (showtime + <?php print $s + 100; ?>)); 
    }); 
    </script> 

Примечание: Я хочу отложить следующее выполнение.

function show_live_feed_notify(index) 
{ 
    sales_feeds.eq(index).animate({bottom: '10px'}, 1000); 

    current_index = index; 
} 

Я попытался вставить

var delay = 10000; 

или

var interval = 10000; 

ни один из них, кажется, работают.

Я также попытался

setTimeout (function(); 3000); 

он вышел с неперехваченной синтаксической ошибкой. Пожалуйста, помогите мне, ребята!

Примечание: Я новичок в JS кодирования/PHP ...

+0

Почему вы используете PHP здесь ? –

ответ

1

Глядя на ваш код, я думаю, вы должны просто удалить строку

show_next_live_notify(); 

в нижней части вашего сценария. Он автоматически выполняет все прямо на старте вместо того, чтобы позволить setInterval делать свою работу

Чтобы задержать весь сценарий, замените последние две строки в вызове JQuery с чем-то вроде этого:

function startMe() { 
    interval = setInterval(show_next_live_notify, (showtime + <?php print $s + 100; ?>)); 
} 

setTimeout(startMe, 10000); 
+0

Спасибо. Но я хотел бы отложить сценарий вместо того, чтобы он выполнялся прямо на веб-странице, перезагружается. я хочу задержать его на 10 секунд. Весь сценарий. – Desmond

+0

То, что я хотел бы сделать. Но если вы также хотите, чтобы 'setInterval' задерживался по какой-либо причине, вы должны удалить последнюю строку своего кода' (interval = setInterval (show_next_live_notify, (showtime + )); 'и замените его на что-то вроде этого – Iarwa1n

+0

function startMe() { – Iarwa1n

0

Вы работать имя show_live_feed_notify, и вы пытались использовать SetTimeout. Поэтому я предлагаю вам попробовать следующее:

var delay = 10000; // 10 seconds 
setTimeout(function() { 
    show_live_feed_notify(current_index + 1); 
}, delay) 
+0

Я пробовал код. к сожалению, javascript по-прежнему выполняется после загрузки веб-страницы. Я хочу отложить их на 10 лет. Как я могу это сделать? – Desmond

+0

3000 здесь количество мс, поэтому это 3 секунды. Вероятно, из-за короткой задержки, которую вы считаете выполненной сразу при загрузке страницы. Если вам нужно 10 секунд, попробуйте значение 10000 –

Смежные вопросы