Использование метода setTimeout
Здравствуйте!
Написал скрипт, который переводит число из десятичной системы в двоичную и выводит весь процесс по шагам. Мне нужно сделать так, чтобы каждый шаг процесса выводился с небольшой временной задержкой, чтобы было нагляднее. В цикл, где выводятся шаги алгоритма, пишу setTimeout (document.write(numb),5). В результате выводится самое первое число, с которого начинается весь процесс перевода, но после него уже не выводится ничего. Наверное, я что-то не так понял в правилах употребления этого метода. Подскажите, пожалуйста, как сделать правильно? На всякий случай, приведу сам скрипт. Код:
<SCRIPT LANGUAGE="javascript"> |
тебе надо цикл "while (numb>1)" заменить на функцию. В функции проверять
numb>1, если выполняется условие, то выполнять то что было в теле цикла + ещё раз вызывать по таймауту эту же функцию. |
Сделал функцию, как вы и говорили. Теперь вообще как-то странно работает: выполняется одна итерация, а затем концовка скрипта. А через время задержки страница обновляется, пропадает фоновый рисунок и настройки шрифта меняются на стандартные.
<BODY background="images.files/клетка4.bmp">
<SCRIPT LANGUAGE="javascript">
function Count(numb)
{
if (numb>1)
{ var a = Math.floor(numb/2);
i=i+1
for (k=1;k<=5;k=k+1)
{
document.write(" ")
}
document.write("<font color='#0000CC'><b>")
document.write(numb)
document.write("</font></b>")
document.write(" |_ 2<br>")
for (k=1;k<=5;k=k+1)
{
document.write(" ")
}
if (a<=1)
{
document.write(a*2+" | ")
document.write("<font color='#CC0000'><b>")
document.write(a+"<br>")
document.write("</font></b>")
}
else
{
document.write(a*2+" | ")
document.write("<font color='#0000CC'><b>")
document.write(a+"<br>")
document.write("</font></b>")
}
document.write("<hr size='1' align='left' width='45' color='000000'>")
document.write("<font color='#CC0000'><b>")
for (k=1;k<=5;k=k+1)
{
document.write(" ")
}
document.write(numb-(a*2))
document.write("             <img src='images.files/стрелка.bmp'>")
if (a<=1)
{
if (a==0)
{
document.write("          <img src='images.files/ноль.bmp'>")
}
else
{
document.write("          <img src='images.files/один.bmp'>")
}
if ((numb-(a*2))==1)
{
document.write("<img src='images.files/один.bmp'><br><br>")
}
else
{
document.write("<img src='images.files/ноль.bmp'><br><br>")
}
cyfr[i]=numb-(a*2)
i=i+1
cyfr[i]=a
}
else
{
if ((numb-(a*2))==1)
{
document.write("          <img src='images.files/один.bmp'><br><br>")
}
else
{
document.write("          <img src='images.files/ноль.bmp'><br><br>")
}
cyfr[i]=numb-(a*2)
}
document.write("</font></b>")
numb=a
setTimeout("Count(numb)",3000)
}
else
{
setTimeout("function(End())",3000)
}
}
var numb = prompt ("Введите число в десятичной системе счисления","Здесь");
cyfr=new Array()
document.write("<HTML>")
document.write("<TITLE>Перевод числа</TITLE>")
document.write("<font size='+1'>")
document.write("<center><H2>Перевести число "+numb+" из десятичной системы счисления в двоичную </H2></center><br>")
var i=0
Count(numb)
document.write("      Переписываем полученные значения в обратном порядке. <br>")
document.write("      <b> Ответ: </b>")
for (k=i;k>=1;k=k-1)
{
document.write(cyfr[k])
}
document.write("</HTML>")
</SCRIPT>
</BODY>
</HTML>
Где косяк? |
всё верно. Так как ты используешь document.write, то получаешь по заслугам! document.write перезаписывает документ (стирает исходный), если он закрыт на запись.
Использовать document.write плохо. Используй document.body.innerHTML. Только не надо писать: document.body.innerHTML += ... document.body.innerHTML += ... document.body.innerHTML += ... document.body.innerHTML += ... Заведи переменную (строку). В неё всё сложи и потом одним махом допиши к document.body.innerHTML. |
| Часовой пояс GMT +3, время: 12:51. |