как сделать "загрузка..."
в общем решил я по маленьку изучить 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 |
| Часовой пояс GMT +3, время: 05:25. |