У меня есть простой скрипт для переключения изображения/текста на onmouseover. Код работает нормально, если не более 2 сообщений, но он становится ОЧЕНЬ медленным, когда число сообщений увеличивается.Медленное выполнение сценария JS
function showPost(ele, eve) {
var id = ele.id.replace("post-", "");
if (typeof window['timerHide-' + id] !== "undefined") {
clearInterval(window['timerHide-' + id]);
}
var target = (eve.relatedTarget) ? eve.relatedTarget : eve.toElement;
var parent = $("post-" + id);
if (typeof target === "undefined" || target === parent || target.parentNode === parent || target.parentNode.parentNode === parent) {
return;
}
var img = $("post-img-" + id);
var txt = $("post-txt-" + id);
if (img.style.opacity === "") {
img.style.opacity = 1;
}
var opacity = img.style.opacity;
window['timerShow-' + id] = setInterval(function() {
if (opacity <= 0.1) {
clearInterval(window['timerShow-' + id]);
img.style.display = 'none';
txt.style.display = 'block';
txt.style.opacity = 1;
}
img.style.opacity = opacity;
img.style.filter = 'alpha(opacity=' + opacity * 100 + ")";
opacity -= opacity * 0.1;
}, 1);
};
Другая функция почти identitcal к этому для этого она скрывает переключены текст, за исключением.
Thx
setInterval (Foo, 1) довольно требовательны, вы выполняете функцию обратного вызова каждую миллисекунду, рассмотрите более высокий интервал (и, в конечном счете, отрегулируйте шаг вашей анимации). – FabienAndre
Возможно, вы даже столкнетесь с интервалами, короткими, чем время вызова => серьезные проблемы. –
Это выглядит довольно страшно для решения проблемы, которая звучит так, будто ее можно решить с помощью чистого CSS или минимального сценария. Легче помочь, если вы предоставите jsfiddle своей попыткой. – tobi