За последние 24 часа нас посетили 17587 программистов и 1283 робота. Сейчас ищут 1330 программистов ...

Таймер. Обратный отсчет.

Тема в разделе "JavaScript и AJAX", создана пользователем exstyles, 20 мар 2020.

  1. exstyles

    exstyles Новичок

    С нами с:
    20 мар 2020
    Сообщения:
    13
    Симпатии:
    1
    Здравствуйте. Есть код
    $v_time - число из базы.
    PHP:
    1. $left_time=$v_time-$now;
    2. $left_min=floor($left_time/60);
    3. $left_sec=$left_time-$left_min*60;
    Код (Javascript):
    1. <SCRIPT LANGUAGE=\"JavaScript\" TYPE=\"text/javascript\">
    2.  var t_m1 = $left_min;
    3.  var t_s1 = $left_sec;
    4.  var hTimeout = 0;
    5.  function reloadTimeout() {
    6.    if (t_s1 == 0 && t_m1 == 0) {
    7.      if (hTimeout >= 0) clearTimeout(hTimeout);
    8.      return;
    9.    }
    10.    t_s1 = t_s1-1;
    11.    if (t_s1 < 0) {
    12.      t_m1 = t_m1-1;
    13.      t_s1 = 59;
    14.    }
    15.    if (t_m1 < 0) {
    16.      t_m1 = 0;
    17.      t_s1 = 0;
    18.    }
    19.    if (t_s1 == 0 && t_m1 == 0) {
    20.      location.href='index.php';
    21.    }
    22.    t_ms.innerHTML = ' осталось: <b>'+t_m1+'</b> мин. <b>'+t_s1+'</b> сек.';
    23.    if (hTimeout >= 0) clearTimeout(hTimeout);
    24.    hTimeout = setTimeout(\"reloadTimeout()\", 1*1000);
    25.  }
    26.  hTimeout = setTimeout(\"reloadTimeout()\", 1*1000);
    27. </SCRIPT>
    вывод
    PHP:
    1. echo"<script>ShowTime('index','".$left_time."',1);</script>
    Самое интересное то, что вобще ничего не вывод. Ни таймера ни ошибок. Помогите пожалуйста запустить.
     
  2. Valick

    Valick Активный пользователь

    С нами с:
    12 авг 2018
    Сообщения:
    1.911
    Симпатии:
    328
    @exstyles, неправильно ты дядя Федор бутерброд ешь...
    Лефт мин и лефт сек сдаётся мне ты не правильно запиндюрил. Ну и в консоль браузера скорее всего не заглядывал.
     
  3. exstyles

    exstyles Новичок

    С нами с:
    20 мар 2020
    Сообщения:
    13
    Симпатии:
    1
    консоль браузера:
    index.php:38 Uncaught TypeError: Cannot set property 'innerText' of null
    at ShowTime (index.php:38)
    at index.php:48
    это if (type==1) { document.all(''+fname).innerText=min+" мин. "+sec+" сек."; } - 38 строка
    <script>ShowTime('index','17417',1);</script> - 48 строка

    Что не так?=)

    Если так
    Код (Javascript):
    1. <script>ShowTime('index','".$v_time-$now."',1);</script>
    то выдает

    Warning: A non-numeric value encountered in \index.php on line 61
    -1584728102',1);
     
    #3 exstyles, 20 мар 2020
    Последнее редактирование: 20 мар 2020
  4. exstyles

    exstyles Новичок

    С нами с:
    20 мар 2020
    Сообщения:
    13
    Симпатии:
    1
    Код (Javascript):
    1. function ShowTime(fname,lefttime,type)
    2. {
    3.   lefttime--;
    4.   if (lefttime<=0) { document.all(''+fname).innerText=''; window.location.reload(); }
    5.   sec=lefttime%60;
    6.  
    7.   min=Math.floor(lefttime/60);
    8.   day=Math.floor(lefttime/86400);
    9.  
    10.   hour=Math.floor((lefttime/3600)-(day*86400/3600));
    11.  
    12.   if (sec<10) sec="0"+sec;
    13.   if (min>60) min-=(Math.floor(min/60)*60);
    14.   if (min==60) min=0;
    15.  
    16.   if (type!=1) { if (min<10) min="0"+min; }
    17.  
    18.   if (type==1) { document.all(''+fname).innerText=min+" мин. "+sec+" сек."; }
    19.   else {
    20.   if (day>0) document.all(''+fname).innerText=day+" д. "+hour+" ч. "+min+" мин.";
    21.   else document.all(''+fname).innerText=hour+" ч. "+min+" мин.";
    22.   }
    23.  
    24.   setTimeout("ShowTime('"+fname+"',"+lefttime+","+type+")",1000);
    25.  
    26. }
    Код (Javascript):
    1. <script>ShowTime('index','".$v_time-$now."',1);</script>
    и даже так все пофигу...