Если вы ищете причину, по которой шаги не сбрасываются после выполнения интервала, это потому, что вам нужно сбросить поля обратно в начальную точку.
Добавьте это в начало callMe ()
$(".leftfoot").css('margin-top', '250px');
$(".rightfoot").css('margin-top', '300px');
Обновление
Я внес несколько изменений в работу шагов в JavaScript. Это должно сделать шаги более плавными, и у вас не будет столько тайм-аутов для работы, только интервал. Вы можете настроить totalSteps, stepDistancePX и stepStartPX, чтобы шаги проходили на большее расстояние или делали шаги больше или меньше.
var steps = {
stepLengthMS : 500,
stepDelayMS : 200,
totalSteps : 6,
stepDistancePX : 200,
stepStartPX : 300,
currentStep : 0
};
step();
setInterval(step, steps.stepLengthMS + steps.stepDelayMS);
function step() {
if (steps.currentStep == 0) {
$(".rightfoot").hide();
$(".leftfoot").hide();
} else {
var isRightFoot = (steps.currentStep % 2) == 1;
var topPX = steps.stepStartPX - parseInt((steps.stepDistancePX / (steps.totalSteps - 1)) * steps.currentStep);
if (isRightFoot) {
$(".rightfoot").css('margin-top', topPX+'px');
$('.rightfoot').fadeIn('fast');
$('.rightfoot').delay(steps.stepLengthMS).fadeOut('fast');
} else {
$(".leftfoot").css('margin-top', topPX+'px');
$('.leftfoot').fadeIn('fast');
$('.leftfoot').delay(steps.stepLengthMS).fadeOut('fast');
}
}
steps.currentStep++;
if (steps.currentStep > steps.totalSteps) {
steps.currentStep = 1;
}
}
CSS и HTML одинаковы.