Как указала Кэмерон, проблема в том, что переменная и функция имеют одно и то же имя.
Также имейте в виду, что в jQuery есть метод с именем .toggle()
... Это не приведет к конфликту, так как это метод $
или jQuery
... но это может сбить с толку тех, кто читает ваш код.
В любом случае, вот более компактный способ решения вашей проблемы:
var count = 1;
function toggle()
{
$("#Layer4").animate({height:'toggle'});
$("#Layer6").animate({height:'toggle'});
$("#toggle").attr('src',"toggle_" + (count++ % 2 ? "up" : "down") + ".jpg");
}
Выше используется условный оператор Javascript для объединения up
или down
в атрибут src
#toggle
.
(count++ % 2 ? "up" : "down")
сначала примет текущее значение счетчика (а затем увеличит его значение) и изменит его на 2. Это значение будет либо 1, либо 0. Если это 1 (true), up
объединяется. Если это 0 (false), down
объединяется. Инкремент должен отслеживать переключение.
В качестве примечания вы можете обернуть ваши переменные, функции и любой jQuery / другой код, который использует либо самозаполняющуюся анонимную функцию, чтобы минимизировать перехват глобального пространства имен и уменьшить вероятность столкновений имен переменных, если позже вы добавите больше скриптов на страницу.
(function() {
var count = 1;
function open() { ... }
function toggle() { ... }
$(function() {
...
});
}());