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

HTML+CSS+JavaScript

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

 

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

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

тема: Как сделать полосу прогресса?
 
 автор: Саня   (25.04.2006 в 21:36)   письмо автору
 
 

Моя идея такова: сделать таблицу, состоящую из двух ячеек. Сначала у первой ячейки ширина - 1пиксель. По истечению времени (раз в секунду, например) увелечить ширину этой ячейки на один пиксель.
Я пробовал сделать так:
<html>
<script language="JavaScript">
function add() {
  document.getElementById("h").width += 1;
}
var timeout = null;
var t = null;
function lo() {
  if (timeout) clearTimeout(timeout);
  timeout = setTimeout(add, 1000);
  if (t) clearTimeout(t);
  timeout = setTimeout(lo, 1000);
}
</script>
<body onload="lo()">
<table border="1" width="300">
<tr><td id="h" width="1">&nbsp;</td>
<td id="d" width="299">&nbsp;</td></tr>
</table>

Вроде всё работает, только слишком быстро изменяется ширина. За три секунды граница подходит к концу. Как мне сделать так, чтобы изменялось нормально?

   
 
 автор: 12345   (25.04.2006 в 23:40)   письмо автору
 
   для: Саня   (25.04.2006 в 21:36)
 

Нельзя брать реальную ширину, потому что она искажается, как видно.

<script>
g=function(i){return document.getElementById(i);}
onload=function add(){
  g("h2").innerHTML=g("h").style.width = (parseInt(g("h").style.width)+4)+'px';
  g("d2").innerHTML=g("d").style.width = (parseInt(g("d").style.width)-2)+'px';
  if(parseInt(g("h").style.width)<999)setTimeout(add,99);
}
</script> 
<table border=1 width=300 height=14> 
<tr><td bgcolor=darkred id=h style=width:5px></td> 
<td bgcolor=lightgrey id=d style=width:295px></td></tr> 
</table>  
<table border=1 width=300> 
<tr><td id=h2 style=width:150px>&nbsp;</td> 
<td id=d2 style=width:150px>&nbsp;</td></tr> 
</table> 

Но из-за Оперы, вероятно, придётся перерисовывать таблицу - вся таблица, вставленная как innerHTML, должна нарисоваться в ней правильно.


...
Опера почти нормально заработала, если 5-ю строчку убрать, а ширину style=width:295px не задать вообще. Напряг у неё с уменьшением стиля ширины.

Способ 2.
Сделать полосу прогресса можно, перевернув полосу неудач.

   
 
 автор: Саня   (26.04.2006 в 02:34)   письмо автору
 
   для: 12345   (25.04.2006 в 23:40)
 

Да, всё работает. Спасибо.

   
Rambler's Top100
вверх

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