как сделать "загрузка..."
в общем решил я по маленьку изучить js и начал с написания такого скрипта как "загрузка..."
что мне надо, чтобы изменялось количество точек, то есть Код:
загрузка вот то что смог накалякать, но почемуто после первого же прохождения цикла он выдает всего лиш то что в document.write document.write("loading") for (i = 1; i < 4; i++) { setTimeout('document.write(".")', 1000) } |
http://javascript.ru/tutorial/dom/modify
http://innerhtml.ru/ document.write() работает так как вы ожидаете только до загрузки страницы. после нее, он просто переписывает заново страницу |
Важно понять специфику работы setTimeout и document.write.
document.write добавляет в документ текст, будет вставлен после закрывающего </script> в текущем блоке скрипта: <script type="text/javascript"> document.write("[docwrite]"); </script> <script type="text/javascript"> alert(document.body.innerHTML); </script> Ну если документ уже закрыт (т.е., считывание его кода завершено), он откроет новый, пустой, и запишет туда. setTimeout не останавливает работу скрипта. Эта функция лишь говорит браузеру запустить что-то, по возможности, через столько-то времени. Код for (i = 1; i < 4; i++) { setTimeout('document.write(".")', 1000) } на самом деле запустит все три функции приблизительно через секунду. Получить нечто похожее на желаемый результат у Вас получится только если setTimeout сработает раньше, чем завершится обработка тега <script>, т.е., фактически почти никогда и в зависимости от фазы Луны. (Если точнее, то в Firefox с задержкой выполнения скрипта модальным окном.) Используйте заместо этого изменение innerHTML у элемента: <script type="text/javascript"> document.write("Загрузка"); for (var i = 1; i < 4; i++){ setTimeout(function(){document.body.innerHTML += "."}, i * 1000) } </script> |
так а чтобы удалить, какую функцию надо вызвать?
<script type="text/javascript"> document.write("Загрузка"); while (true) { for (var i = 1; i < 4; i++){ setTimeout(function(){document.body.innerHTML += "."}, i * 1000) } функция удаления точек } </script>и так правильно организовывать бесконечный цикл? |
Я бы советовал Вам подучить сначала язык, прежде чем браться за такие задачи — возьмите пример попроще и двигайтесь к усложнению.
Помните, документ в яваскрипт не очень-то похож на консольное окошко, и некоторые задачи, которые для изучения, скажем, C поставляются в начале учебника, в javascript могут оказаться извратом. |
спасибо. ща учу, вообще запутался в этих методах, объектах, функция О_О
php давался намного легче |
Цитата:
|
<script type="text/javascript"> var points=0; var timeRset = setTimeout("timeR()",1000); function timeR() { points++; timeRset=setTimeout("timeR()",1000); document.getElementById("load").innerHTML +="."; if(points==4){document.getElementById("load").innerHTML =""; points=0;} } </script> <p >Загрузка<span id="load"></span></p> |
ffx,
Если будут вопросы, я объясню |
JsLoveR,
спасибо не понимаю зачем это var timeRset = setTimeout("timeR()",1000);почему нельзя просто запустить timeR()при такой конструкции се работает но с ошибкой document.getElementById("load") is null |
var timeRset = setTimeout("timeR()",1000); я написал так вместо того, чтобы писать <body onload="timeR()"> , если просто вызвать функцию timeR(); одна точка потеряется, по-этому и будет ошибка document.getElementById("load") is null
|
Часовой пояс GMT +3, время: 05:49. |