Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Бесконечный цикл, страница зависает :/


Автор: Michael.de 1.3.2008, 00:50
Доброго времени суток smile

В директории находятся след. файлы: Pictures.htm, pictures.js и 7 картинок *.png.

листинг Pictures.htm
Код
<html>
<head>
<script type='text/javascript' src='pictures.js'></script>
<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'>
<title>test</title>
</head>
<body onload="init(100, 100, 3)">
<div id='lt' onclick="move('l')"></div>
<div id='rt' onclick="move('r')"></div>
<div><img src='1.png'></div>
<div><img src='2.png'></div>
<div><img src='3.png'></div>
<div><img src='4.png'></div>
<div><img src='5.png'></div>
<div><img src='6.png'></div>
<div><img src='7.png'></div>
</body>
</html>


листинг файла pictures.js:
Код
function init(mL, mT, num){
 var i, l, pic;
 pic = document.getElementsByTagName("div");
 l = pic.length;
 for (i=0; i<l; i++){
  alert(i); // выдаёт значения: 0, 1, 1, 1... ???????????
  pic[i].style.position = 'absolute';
  pic[i].style.top = mT+'px';
  if (i<2){
   pic[i].style.backgroundColor = '#E0E0FF';
   pic[i].style.zIndex = '1';
   if (i=0) pic[i].style.left = mL+'px';
   else pic[i].style.left = mL+(num+1)*100+'px';
  }
  else {
   pic[i].style.zIndex = '0';
   pic[i].style.left = mL+'px';
  }
 }
}


Код начинает выполняться и зависает... alert() в шестой строке выдаёт значения 0, 1, 1, 1, 1... и не идёт дальше, несмотря на i++
Это же какая-то мистика smile

P.S. Листинг function move(where){} не привожу, т.к. работает.

Автор: Sardar 1.3.2008, 01:11
Есть вещи, которые быть не могут. Дай ссылку, подебажим.

Автор: Michael.de 1.3.2008, 01:35
Sardar, ссылки нет, есть только 2 листинга, которые я привёл. Я "залил" картинки на ImageShack и Pictures.htm можно вызвать так:
Код
<html>
<head>
<script type='text/javascript' src='pictures.js'></script>
<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'>
<title>test</title>
</head>
<body onload="init(100, 100, 3)">
<div id='lt' onclick="move('l')"></div>
<div id='rt' onclick="move('r')"></div>
<div><img src='http://img244.imageshack.us/img244/2600/71901851rb0.png'></div>
<div><img src='http://img267.imageshack.us/img267/9977/42229141la9.png'></div>
<div><img src='http://img267.imageshack.us/img267/2297/19384104uh3.png'></div>
<div><img src='http://img341.imageshack.us/img341/9656/43244272yf4.png'></div>
<div><img src='http://img341.imageshack.us/img341/4201/17155520qs9.png'></div>
<div><img src='http://img267.imageshack.us/img267/8647/18261219ff5.png'></div>
<div><img src='http://img209.imageshack.us/img209/1781/23855700mb4.png'></div>
</body>
</html>


P.S. Среди тем, которые "выпадают" снизу при создании новой темы, мельком прочитал, что если свойства элементов не прописаны в CSS, то что-то там... smile

Автор: Sardar 1.3.2008, 03:14
Если счётчик застрял на 1, а ты точно знаешь, что на каждой итерации он увеличивается на 1 - значит кто то его обнуляет. Ищем все =0, находим на 12 строке. Исправь на i == 0, ты ведь сравнение хотел.

Автор: Michael.de 1.3.2008, 17:34
Sardar, большое спасибо smile 

P.S. Мдя... утром заметил, что двум первым div-ам забыл width и height повесить (чего-то я совсем уже smile)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)