Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как сделать обратный отчет?
 
 автор: Job   (23.06.2007 в 15:39)   письмо автору
 
 

Пытаюсь сделать обратный отчет.
нужно чтобы происходил отчет от 15 до 0
делаю так:

<div id=16></div>
<script> 
var b = 0;
for(i=15; i>0; i--)
{  
b = (i+1); 
document.write('<div id='+i+'>'+i+'</div>');
document.getElementById(b).style.display = "none";
sleep(1);

</script>


но вместо sleep() нужно реальную функцию которая останавливала бы скрипт на 1 секудну, неподскажете?

И вообще есть ли такая функция?

Я вот знаю только как страницу перезагрузить:

<script>
window.setTimeout('location.href("test.php")',3500);
</script>

   
 
 автор: CNT   (23.06.2007 в 16:28)   письмо автору
 
   для: Job   (23.06.2007 в 15:39)
 

-

   
 
 автор: Job   (23.06.2007 в 16:33)   письмо автору
 
   для: CNT   (23.06.2007 в 16:28)
 

?

   
 
 автор: bronenos   (23.06.2007 в 17:02)   письмо автору
 
   для: Job   (23.06.2007 в 16:33)
 

вызывайте функцию через setInterval (func, 1000);
и в ней делайте то, что надо для одного шага цикла

   
 
 автор: Job   (23.06.2007 в 17:28)   письмо автору
 
   для: bronenos   (23.06.2007 в 17:02)
 

Безрезультатно :( Делаю так:


<div id=16></div>
<script>
var i=16;
var b=0; 

function sleep()
{    
    b=i;
    i=(i-1);
    document.write('<div id='+i+'>'+i+'</div>');
    document.getElementById(b).style.display = "none";
}


for(f=0; f<15; f++)
{
setInterval (sleep(), 1000); 
}
</script>

   
 
 автор: bronenos   (23.06.2007 в 18:14)   письмо автору
 
   для: Job   (23.06.2007 в 17:28)
 

<div id='timer'>15</div>

<script>
var div = document.getElementById ('timer');
setInterval ('div.innerText--;', 1000);
</script>

   
 
 автор: CNT   (23.06.2007 в 19:59)   письмо автору
 
   для: Job   (23.06.2007 в 17:28)
 

1. Никогда не назначайте имена объектам и переменным в виде только цифр.
<div id=16> - это очень неграмотно.
Например, будете сравнивать некую переменную myVar c числом 16, а браузер посчитает, что вы сравниваете переменную myVar c объектом под идентификатором "16" и даст вам вместо ожидаемого вами "равно" неверное "не равно".
Также некорректным будет давать переменным (и объектам) имена, начинающиеся с цифр (типа "7day") - из тех же соображений: приравнивая типы переменных при сравнении, браузер, наоборот, может "откинуть" буквы "day", приведя строку к целочисленному виду и будет вместо ожидаемого вами сравнения объектов cравнивать числа.
Даже знак подчёркивания не должен быть первым (это некорректно обрабатывается Эксплорером в таблице стилей - конструкцию #_abc {color: red} в блоке <style></style> Эксплорер проигнорирует и текст объекта с id="_abc" не станет красным).
В общем, запомните навсегда: любое имя должно начинаться с буквы.

2. Метод document.write при его использовании на уже сформированном документе полностью переписывает всё содержимое документа, т.е. сначала уничтожает все объекты в документе (в том числе и самоё себя), а потом создает новый документ, записывая в него то, что прописано в скобках метода.
Т.е. если дадите браузеру команду "написать что-то, потом подождать, потом снова написать что-то... и так 16-ть раз", то браузер напишет это ваше "что-то", но только один раз - самый первый. И при этом первом написании вся остальная инструкция ("ждать и снова писать") будет уничтожена.
Усекли?

3. Таким образом, объект, в котором вы будете прописывать числа от 15 до 0, изначально должен быть на странице и ни в коем случае не должен весь переписываться методом write (и, разумеется, он должен быть с нормальным ID). С помощью вызова таймера через 1000 миллисекунд вы просто меняете innerHTML этого существующего объекта от 15 до 0. Когда innerHTML станет равным нулю, дадите команду этому объекту - "исчезни!"
<div id="myDiv">15</div>
<script>
function myFunc ()
{
with (document.getElementById ('myDiv'))
   if (myCount != 0) {innerHTML = --myCount; myTimer = window.setTimeout (myFunc, 1000)}
   else {style.display = 'none'; window.clearTimeout (myTimer)}
}
var myCount = 15, myTimer = window.setTimeout (myFunc, 1000);
</script>

   
 
 автор: Job   (24.06.2007 в 10:29)   письмо автору
 
   для: CNT   (23.06.2007 в 19:59)
 

Большое всем спасибо, особенно CNT, здорово просветили вы меня сегодя в JS :)


В своё опрадание могу сказать, это первое что я делаю на JS...

Но обязательно, при дальнейших разработках все выше сказанное буду иметь ввиду.


СПАСИБО!

:)

   
 
 автор: bronenos   (24.06.2007 в 11:24)   письмо автору
 
   для: Job   (24.06.2007 в 10:29)
 

вот черт, забыл у себя поставить инструкцию чтоб остановился на 0 :)

   
 
 автор: Job   (24.06.2007 в 14:25)   письмо автору
 
   для: bronenos   (24.06.2007 в 11:24)
 

Я сам сделал, спасибо ещё раз :) Вот есть же добрые люди :)

Вот кто бы с AJAX ещё помог..... чат нужен... подробности

http://softtime.ru/forum/read.php?id_forum=1&id_theme=39385

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования