Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Не выполняется условие if (https://javascript.ru/forum/misc/44303-ne-vypolnyaetsya-uslovie-if.html)

cooldanie 15.01.2014 01:06

Не выполняется условие if
 
Всем привет. Скажите пожалуйста (у кого появятся идеи), почему может не работать условие в небольшой функции:

z=0;
d=0;
function right(len) {
if (z==-len) {return};
d=setTimeout('right()',10);
z -= 5;
document.getElementById("gallery").style.left = z + 'px';

<img onmouseover="right(50);" onmouseout="clearTimeout(d);">


Эта ф-я прокручивает блок с миниатюрами при наведении курсора на рисунок стрелки. Когда положение блока == нужному параметру, движение останавливается. В моем случае это условие почему-то не срабатывает, и блок едет бесконечно (если подставить параметр прямо в условие - работает). Пытался алертить при каждом смещении блока, через 2-3 смещения значение параметра алертится "NaN".

Спасибо!

danik.js 15.01.2014 04:56

Цитата:

Сообщение от cooldanie
d=setTimeout('right()',10);

А где параметр len потерял?

ruslan_mart 15.01.2014 06:41

var d = 0,
	z = 0,
	gallery = document.getElementById('gallery').style;

function right(len) {
	d = setInterval(function() {
		if(z == -len) clearInterval(d);
		else gallery.left = (z -= 5) + 'px';
	}, 10);
}


<img onmouseover="right(50)" onmouseout="clearInterval(d)" />

cooldanie 15.01.2014 11:05

d=setTimeout('right(len)',10); - в этом случае даже движения нет, может я ошибаюсь в синтаксисе setTimeout? Меня тоже смущает это место. Но без len хотя бы едет блок и останавливается при onmouseout. Не может только остановиться на крае, едет дальше

(ссылка на всякий случай)
_http://svyatoslavdesign.com.ua/works/catering/1/

cooldanie 15.01.2014 11:11

Цитата:

Сообщение от Ruslan_xDD (Сообщение 292190)
var d = 0,
	z = 0,
	gallery = document.getElement('gallery').style;

function right(len) {
	d = setInterval(function() {
		if(z == -len) clearInterval(d);
		else gallery.left = (z -= 5) + 'px';
	}, 10);
}


<img onmouseover="right(50)" onmouseout="clearInterval(d)" />

Эта конструкция тоже не хочет двигать блок, даже с подстановкой числа параметра в if - по крайней мене у меня в коде

kaf 15.01.2014 13:26

а если разместить тег img до скрипта и поставить ему id="gallery" ?

cooldanie 15.01.2014 14:01

Цитата:

Сообщение от kaf (Сообщение 292227)
а если разместить тег img до скрипта и поставить ему id="gallery" ?

у меня скрипт в отдельном файле js, а id="gallery" присвоено блоку, который содержит миниатюры и движется. <img> в моем посте - это картинка стрелки. Киньте кусочек кода для примера, может я вас не понял?

kaf 15.01.2014 15:56

<img id="gallery" onmouseover="right(50);" onmouseout="clearInterval(d);"></div>

var d = 0,
        z = 0,
        gallery = document.getElementById('gallery').style;

    function right(len) {
        d = setInterval(function() {
            if(z == -len) clearInterval(d);
            else gallery.left = (z -= 5) + 'px';
        }, 10);
    }

хотя возможно не работало только из-за опечатки в document.getElementById('gallery').style

cooldanie 15.01.2014 17:16

Цитата:

хотя возможно не работало только из-за опечатки в document.getElementById('gallery').style
это я видел и правил - не помогло, и дело не в нем. не работало и не работает

kaf 15.01.2014 18:31

в стиле y img position absolute ?


Часовой пояс GMT +3, время: 07:15.