Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > settimeout и submit()


Автор: Serebrus 8.2.2011, 15:54
Привет всем.
Задача такая: устанавливается время, проверяется текущее время переодически и в случае если время равна указанному, надо отправить данные.
Код

var realt='19:00:30';
function start_lock()
{
 t=window.setTimeout("start_lock();", 10000);
 dt = new Date();
 var h=dt.getHours();
 var m=dt.getMinutes();
 var s=dt.getSeconds();
 
 if(h<10){hh='0'+h;}else{hh=h;}
 if(m<10){mm='0'+m;}else{mm=m;}
 if(s<10){ss='0'+s;}else{ss=s;}
 rd=hh+':'+mm+':'+ss;
 if(rd>=realt)
 {
  window.clearTimeout(t);
  document.block_user.submit();  
 }  
}

Но, когда время равняется, скрипт просто зацикливается, браузер зависает. Как можно это осуществить это?
Спасибо.

Автор: Serebrus 15.2.2011, 17:32
Все еще не нашел ответ, пожалуйста, помогите решить эту задачу

Автор: cccr85 15.2.2011, 18:38
Теперь берем и тестируем код.

Код

var realt,rd;

alert('test1');
realt = '19:00:30';
rd     = '19:00:29';

if (rd >= realt) {
   alert('rd>=realt');
} else {
   alert('rd<realt');
}

alert('test2');
realt = '19:00:30';
rd     = '19:00:30';

if (rd >= realt) {
   alert('rd>=realt');
} else {
   alert('rd<realt');
}

alert('test3');
realt = '19:00:30';
rd     = '19:00:31';

if (rd >= realt) {
   alert('rd>=realt');
} else {
   alert('rd<realt');
}




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


Автор: cccr85 15.2.2011, 19:02
А все почему? А потому что мы сравниваем строки. Не дату, а строки. Копайте в сторону сравнения количества секунд прощедших с 1 января 1970

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)