Вход

Просмотр полной версии : if...else не корректно работает


???
13.06.2012, 13:02
добрый день уважаемые форумчане.
вот возникла такая проблема:
оператор ветвления в цикле срабатывает только один раз, тогда как должен срабатывать постоянно....остальной код работает, а вот собственно и он:

ns4 = (document.layers)? true:false
ie4 = (document.all)? true:false
var mouse_x = y = 0;
function init() {
if (ns4) {document.captureEvents(Event.MOUSEMOVE);}
document.onmousemove=mousemove;
}
function mousemove(event) {

if (document.attachEvent != null) {
mouse_x = window.event.clientX;
mouse_y = window.event.clientY;
} else if (!document.attachEvent && document.addEventListener) {
mouse_x = event.clientX;
mouse_y = event.clientY;
}
status="x = " + mouse_x + ", y = " + mouse_y;
document.getElementById('xy').innerHTML = "x = " + mouse_x + ", y = " + mouse_y;
}
init()
var i = 250, j = 500;
function f_img() {
document.getElementById('img0').style.width = document.getElementById('img0').width + 2 + 'px';
document.getElementById('img0').style.height = document.getElementById('img0').height + 2 + 'px';

i -= 1;
j -= 1;

document.getElementById('img0').style.top = i + 'px';
document.getElementById('img0').style.left = j + 'px';
if (document.getElementById('img0').width == 300) {
new_img();
}
}
function new_img() {
document.getElementById('img0').style.width = 1 + 'px';
document.getElementById('img0').style.height = 1 + 'px';
document.getElementById('img0').style.top = mouse_y + 'px';
document.getElementById('img0').style.left = mouse_x + 'px';
i = mouse_y;
j = mouse_x;
}


я имею ввиду последний оператор ветвления
if (document.getElementById('img0').width == 300) {
new_img();
}

вот он то и срабатывает только один раз.
в body у меня стоит
f_img();
setInterval("f_img();",30);

короче говоря всё остальное работает исправно....и картинка увеличивается...

помогите пожалуйста разобраться.
заранее спасибо.

Deff
13.06.2012, 14:32
???, В этом месте,(строка 13) и в концовке оператора else, пробуйте добавить нужные скомки
} else { if (!

Безскобочная запись трактуется однозначно при однострочных операторах

???
13.06.2012, 14:37
???, В этом месте,(строка 13) и в концовке оператора else, пробуйте добавить нужные скомки
} else { if (!

Безскобочная запись трактуется однозначно при однострочных операторах

да это то тут причём??
последний оператор срабатывает только один раз. наверху всё исправно.

поясню:
есть картинка. она начинает увеличиваться. когда она достигает width = 300 она перемещается на место курсора и уменьшается до размеров 1х1.
вооот...
так первый раз и происходит, но когда она увеличивается второй раз ничего не происходит...и она растёт в бесконечность....вот в чём проблема...((

lord2kim
13.06.2012, 16:28
попробуйте setInterval уменьшить...или в условии указать вместо == установите >=

???
13.06.2012, 16:34
попробуйте setInterval уменьшить...или в условии указать вместо == установите >=

чувак ты гений!!!!!:)
как я жестко ступил:-?

document.getElementById('img0').style.width = document.getElementById('img0').width + 2 + 'px';

if (document.getElementById('img0').width == 300) {
new_img();
}

document.getElementById('img0').style.width = 1 + 'px';


второй раз же у меня получался всегда нечётный размер...
вот я долбан:lol: :lol:

спасибо)))))