Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » js :: работа с числами (+ и -)

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

Sutar



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здравствуйте...
у меню возникла такая проблема
 
вот есть скрипт
 

Код:
<script type="text/javascript">
var ban_id = new Array();
var ban_d = new Array();
var ban_h = new Array();
var ban_m = new Array();
var ban_s = new Array();
 
var total = 0;
 
function add_ban(id, d, h, m, s) {
    total++;
    
    ban_id[total] = id;
    ban_d[total] = d;
    ban_h[total] = h;
    ban_m[total] = m;
    ban_s[total] = s;
    return false;
}
 
function mk_time() {
    for(var i = 1; i <= total; i++) {
        if(ban_s[is] > 0) {
            ban_s[is] = ban_s[is] - 1;
        } else {
            ...
        }
        document.getElementById("ban_" + is).innerHTML = ban_d[is] + "д. " + ban_h[is] + "ч. " + ban_m[is] + "м. " + ban_s[is] + "с.";
    }
    
    setInterval(mk_time, 1000)
    return false;
}
</script>

 
скрипт получает и сохраняет в массивы в функции add_ban()
после в mk_time() начинает "массово" из минусовать, но вот тут и есть ошибка, если передать в js 100
то вот что получился с каждой секундой
 
100
99
97
94
...

Всего записей: 1150 | Зарегистр. 15-08-2011 | Отправлено: 21:25 30-08-2013
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sutar
ну есть же тема
 
вопросы по javascript
 

Цитата:
 setInterval(mk_time, 1000)  

вызывается один раз !
зачем вы его каждый раз в функции вызываете?  
вот и запускаете кучу таймеров одновременно.
 
ps: это не setTimeout.. setInterval запускает периодичный таймер, который не удаляется самостоятельно.

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 21:29 30-08-2013 | Исправлено: Cheery, 21:30 30-08-2013
Sutar



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Cheery
точно... спасибо большое
а вот в этом скрипте в чем ошибка будет
 

Код:
<script type="text/javascript">
 
var ban_id = new Array();
var ban_time = new Array();
var total = 0;
 
function add_ban(id, length) {
    total++;
    
    ban_id[total] = id;
    ban_time[total] = length;
    
    return false;
}
 
function mk_time() {
    var date = Math.round(new Date()/1000);
    var days, hours, minutes, seconds, exp
    
    for(var id = 1; i <= total; id++)
    {
        exp = date - ban_time[id];
        
        days = Math.round(exp/86400);
        exp = exp - (days*86400);
        
        hours = Math.round(exp/3600);
        exp = exp - (hours*3600);
        
        minutes = Math.round(exp/60);
        seconds = exp - (minutes*60);
        
        document.getElementById("ban_" + i).innerHTML = days + "д. " + hours + "ч. " + minutes + "м. " + seconds + "с.";
    }
    
    setInterval(mk_time, 900)
    return false;
}
</script>

 

Цитата:
ну есть же тема

я знаю, просто не думал что там будут отвечать...

Всего записей: 1150 | Зарегистр. 15-08-2011 | Отправлено: 21:34 30-08-2013
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sutar

Цитата:
а вот в этом скрипте в чем ошибка будет  

я же сказал в чем
 

Цитата:
 setInterval(mk_time, 900)  

срабатывает каждый раз, при вызове
Цитата:
mk_time()



----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 21:35 30-08-2013
Sutar



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Cheery
скрипт бывает показывает -139д. или там -21ч.
 
или например должно показывать
 
0д. 2ч. 15м. 55с.
а показывает
 
15948д. -9ч. 1м. -4с.
 
я так понял, что оно округляет с Math.round в большую сторону а нужно, чтоб округляло с php round(..., 0)
 
т.е.
может быть что

Всего записей: 1150 | Зарегистр. 15-08-2011 | Отправлено: 21:54 30-08-2013 | Исправлено: Sutar, 22:03 30-08-2013
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sutar

Цитата:
скрипт бывает показывает -139д. или там -21ч.

значит в математике что то не так

Цитата:
Math.round(exp/86400);

зачем там round?? только floor

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 22:02 30-08-2013
Sutar



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Cheery
Спасибо, помогло.

Всего записей: 1150 | Зарегистр. 15-08-2011 | Отправлено: 22:10 30-08-2013
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Интернет » Web-программирование » js :: работа с числами (+ и -)


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru