Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 14.01.2014, 17:33
Новичок на форуме
Отправить личное сообщение для Toni Посмотреть профиль Найти все сообщения от Toni
 
Регистрация: 14.01.2014
Сообщений: 5

Почему 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>
Ответить с цитированием
  #2 (permalink)  
Старый 14.01.2014, 17:49
Аватар для mi.rafaylik
Кандидат Javascript-наук
Отправить личное сообщение для mi.rafaylik Посмотреть профиль Найти все сообщения от mi.rafaylik
 
Регистрация: 07.12.2012
Сообщений: 113

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

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

Последний раз редактировалось mi.rafaylik, 14.01.2014 в 20:39.
Ответить с цитированием
  #3 (permalink)  
Старый 14.01.2014, 18:09
Новичок на форуме
Отправить личное сообщение для Toni Посмотреть профиль Найти все сообщения от Toni
 
Регистрация: 14.01.2014
Сообщений: 5

Не помогло. Объявляю пустую 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>
Ответить с цитированием
  #4 (permalink)  
Старый 14.01.2014, 18:15
Аватар для mi.rafaylik
Кандидат Javascript-наук
Отправить личное сообщение для mi.rafaylik Посмотреть профиль Найти все сообщения от mi.rafaylik
 
Регистрация: 07.12.2012
Сообщений: 113

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

Последний раз редактировалось mi.rafaylik, 14.01.2014 в 18:30.
Ответить с цитированием
  #5 (permalink)  
Старый 14.01.2014, 18:15
Новичок на форуме
Отправить личное сообщение для Toni Посмотреть профиль Найти все сообщения от Toni
 
Регистрация: 14.01.2014
Сообщений: 5

Скопировал из "решения" , не работает... странно.
Ответить с цитированием
  #6 (permalink)  
Старый 14.01.2014, 18:20
Аватар для mi.rafaylik
Кандидат Javascript-наук
Отправить личное сообщение для mi.rafaylik Посмотреть профиль Найти все сообщения от mi.rafaylik
 
Регистрация: 07.12.2012
Сообщений: 113

Откройте консоль браузера и посмотрите есть ли там ошибки после второго клика.
Ответить с цитированием
  #7 (permalink)  
Старый 14.01.2014, 18:21
Новичок на форуме
Отправить личное сообщение для Toni Посмотреть профиль Найти все сообщения от Toni
 
Регистрация: 14.01.2014
Сообщений: 5

Работает если в браузере в исходном коде margin-left поменять на 0, то срабатывает, и выставляет значение 350px и т д.
Ответить с цитированием
  #8 (permalink)  
Старый 14.01.2014, 18:23
Новичок на форуме
Отправить личное сообщение для Toni Посмотреть профиль Найти все сообщения от Toni
 
Регистрация: 14.01.2014
Сообщений: 5

chrome пишет : event.returnValue is deprecated. Please use the standard event.preventDefault() instead.
Ответить с цитированием
  #9 (permalink)  
Старый 14.01.2014, 18:34
Аватар для mi.rafaylik
Кандидат Javascript-наук
Отправить личное сообщение для mi.rafaylik Посмотреть профиль Найти все сообщения от mi.rafaylik
 
Регистрация: 07.12.2012
Сообщений: 113

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

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

Последний раз редактировалось mi.rafaylik, 14.01.2014 в 18:48.
Ответить с цитированием
  #10 (permalink)  
Старый 08.03.2014, 01:40
Новичок на форуме
Отправить личное сообщение для andreys2 Посмотреть профиль Найти все сообщения от andreys2
 
Регистрация: 24.12.2011
Сообщений: 2

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



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Окно открывается только один раз altermann ExtJS 8 22.04.2010 11:55
Почему событие срабатывает один раз? igsavenko jQuery 6 03.03.2010 09:26
Чтоб ссылка появлялась один раз для каждого пользователя (по IP или Cookies) Sequoia Общие вопросы Javascript 2 28.01.2010 19:16
Выделить группу чекбоксов. В группе может быть только один чекбокс. JooZ Элементы интерфейса 2 23.12.2009 19:28
Спойлер работает только на один объект на странице. Shanks Общие вопросы Javascript 4 10.05.2009 14:53