Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Почему click() срабатывает только один раз? (https://javascript.ru/forum/jquery/44296-pochemu-click-srabatyvaet-tolko-odin-raz.html)

Toni 14.01.2014 17:33

Почему click() срабатывает только один раз?
 
Функция сдвигает слой влево.
Сдвигает один раз. В чем проблема, не пойму, помогите пожалуйста!
Нужно чтобы она работала при каждом нажатии.
<script type="text/javascript">
 var i=0;
 var m;
 margin=$("div#slideimages").css("margin-left");
 
 $("div#rew").click(function(){
    if(i<8){
    //alert("Стартуем!")
    //alert(margin)
    m=parseInt(margin)-175
    //alert(m)
    margin=m+"";
    margin=m+"px";
   //alert(margin)
    $("div#slideimages").css("margin-left",margin);
    i++;
    //alert (i)
    }
    else{
        alert("Счетчик достиг 8");
    }
    
 });
 </script>

mi.rafaylik 14.01.2014 17:49

Посмотреть решение

Ошибки:
1. перед переменной margin нехватает var.
2. parseInt можно перенести в первое объявление переменной margin.
3. на десятой строке - не хватает точки с запятой в конце сроки.
4. 12 и 13 строки лишние.
5. переменная m лишняя, перезаписывайте переменную margin.
.

Toni 14.01.2014 18:09

Не помогло. Объявляю пустую margin, внутри функции click() получаю margin и не срабалывает на второй раз:-?
<script type="text/javascript">
 var i=0;
 var m;
 var margin; 
 $("div#rew").click(function(){
    if(i<8){
    margin;=$("div#slideimages").css("margin-left");
    //alert("Стартуем!")
    //alert(margin)
    m=parseInt(margin)-175
    //alert(m)
    margin=m+"";
    margin=m+"px";
   //alert(margin)
    $("div#slideimages").css("margin-left",margin);
    i++;
    //alert (i)
    }
    else{
        alert("Счетчик достиг 8");
    }
    
 });
 </script>

mi.rafaylik 14.01.2014 18:15

Посмотрите решение по ссылке в моём предыдущем комментарии.
Там всё работает.
P.S. переписал немного, сократил. и добавил список ошибок.

Toni 14.01.2014 18:15

Скопировал из "решения" , не работает... странно.

mi.rafaylik 14.01.2014 18:20

Откройте консоль браузера и посмотрите есть ли там ошибки после второго клика.

Toni 14.01.2014 18:21

Работает если в браузере в исходном коде margin-left поменять на 0, то срабатывает, и выставляет значение 350px и т д.

Toni 14.01.2014 18:23

chrome пишет : event.returnValue is deprecated. Please use the standard event.preventDefault() instead.

mi.rafaylik 14.01.2014 18:34

1. Даже если в css не задавать элементу margin-left, то это значение в любом случае будет равно 0.
2. Двигать блок можно и с помощью position() (относительно родителя) или offset() (относительно документа)

Посмотреть
Смотрите ещё раз мой пример, я минимизировал его (было много лишнего), и ищите конфликт с остальным кодом всего Вашего скрипта. В консоли, кроме ошибки, отображается и номер строки скрипта, на которой произошла ошибка.
Ещё проверьте, чтоб например не было двух разных глобальных переменных с именем margin. Поэтому в моём примере может работать а в Вашем нет.

andreys2 08.03.2014 01:40

такая же бойда).. скрипт работал, а потом вдруг перестал, и с этим же предупреждением.. заменил версию на новую 1.9.1 , заменил .live на .on везде., и все заработало) выходит - мы все под колпаком :haha: даже на локалке это дело было


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