2013-03-16 4 views
0

Я пытаюсь сделать базовую анимацию javascript/jquery. В принципе, div, который скрыт под нормальным представлением, должен появиться при нажатии кнопки.Javascript else condition not triggering

Проблема у меня есть в состоянии (инструкция if else).

Вот код, который я использую.

$(document).ready(function() { 
    animationClick('#animateThis', '#someElement', '#startHere'); 
}); 

function animationClick(element, secondElement, elementToBeClicked) { 
    element = $(element); 
    elementToBeClicked = $(elementToBeClicked); 
    secondElement = $(secondElement); 
    var state = 0; 
    var containerWidth = $('#container').width(); 
    elementToBeClicked.on("click", function() { 
     if(state == 0) { 
      secondElement.animate({ 
       top: '27%', 
      }, 500); 
      element.animate({ 
       left: '0%', 
      }, 500); 
      elementToBeClicked.html("Hide"); 
      state = 1; 
     } else { 
      alert('hehehe'); 
     } 
    }) 
}; 

Так, в основном, это то, что происходит. Вся функция помещается в document.ready. Когда я нажимаю на кнопку (с которой связана эта функция), оператор if возвращает true, и код запускается. Он также устанавливает состояние в 1.

После того, как государство получает значение 1, заявление else if должно вступить в действие и показать alert("hehehe"), но это не так.

Может ли кто-нибудь дать мне какой-нибудь совет? Что я делаю не так ?

+0

Функция должна быть функцией – Anoop

+0

@Sushil Что вы подразумеваете под этим? – speci

+0

Функция f должна быть в lowerCase – Anoop

ответ

2

Вы связали событие "click" с номером "elementToBeClicked" в начале if. Попробуйте указать unbind в конце инструкции if, а затем посмотреть, что произойдет, но, как правило, чтобы проверить только, что выполняется else, просто выведите предупреждение из события click.

+0

Исправлено. Все еще не работает. В консоли нет ошибок. Я замечаю, что каждый клик после первого запускает оператор if еще раз ... – speci

+0

обновите свой код, чтобы узнать, что вы сделали. –

+0

Я обновил код. – speci

0

Я думаю, проблема в том, что при сравнении переменных и нуля в выражении if вы должны использовать три ===. Например: if (state === 0)

1

Ваше переменное «состояние» является локальным для функции. Вот почему при последующих вызовах функции всегда 0. инициализируйте переменную вне функции.