После установки Chrome Developer Tools и небольшой отладки я обнаружил, что мне кажется, что это ошибка в движке Chrome javascript.
Свойство hs.style.opacity начинается с 1. При первом запуске:
hs.style.opacity -= 0.05
Принимает ожидаемое значение 0,95.Но во второй раз он получает 0,899999999999999 вместо 0,90, как и ожидалось.Цикл продолжается до тех пор, пока он не получит значение 0,4999 ... 9684, затем он, похоже, отказывается от вычитания 0,05, поэтому интервал fadeOut никогда не сбрасывается, поскольку hs.style.opacity никогда не достигает значения 0 или ниже.
Быстрое исправление, похоже, меняется:
if ( hs.style.opacity <= 0 )
на
if ( hs.style.opacity < 0.5 )
Но это показывает более широкий разрыв между изображениями при последнем изменении, поэтому лучшим решением может быть округлениепосле вычитания значение равно двум десятичным знакам, поэтому я пробую новый подход, который отлично работает:
Изменение:
hs.style.opacity -= 0.5;
By:
aux = Math.round(hs.style.opacity * 100);
aux -= 5;
hs.style.opacity = aux / 100;
Так что это РЕШЕНО.