Это работает:
var on = true,
sw = document.getElementById("switch"),
stop, y = 0,
dir, to;
function animate() {
sw.style.backgroundPosition = y + 'px 0px';
y += dir;
if (y != stop) {
to = setTimeout(animate,25);
}
}
function toggle() {
if (to) {
clearTimeout(to);
}
if (on) {
dir = -1;
stop = -38;
}
else {
dir = 1;
stop = 2;
}
to = setTimeout(animate, 25);
on = !on;
}
DEMO
Не знаю, насколько это лучший способ.
Примечание. Необходимо либо запустить код в обработчике события body.onload
, либо поместить его внизу страницы.
Вы также можете попробовать поиграть с размером шага и временем ожидания... было что-то еще, что я хотел сказать, но я забыл;)
Еще одно примечание: вы всегда должны использовать выразительные имена переменных.Например, было не ясно, что x
используется в качестве логического индикатора (по крайней мере, если у вас есть только быстрая блокировка на нем).