#jquery #internet-explorer-8 #internet-explorer-7
#jquery #internet-explorer-8 #internet-explorer-7
Вопрос:
в основном, я получил этот фрагмент кода, который не работает в ie8 и ниже.
Автоматическое изменение приводит к исчезновению текущего блока текста, но не исчезает в новом, что заставляет меня думать, что это .next (), который воспроизводится, поскольку нажатие на цифры (функция .click) работает нормально.
jQuery:
function doSlideshow() {
if ($('.image_links a.selected').attr("rel") == "five") {
the = $('.image_links a:first');
} else {
the = $('.image_links a.selected').next('a');
}
$('.image_links a.selected').removeClass("selected");
$(the).addClass("selected");
var theNum = $(the).attr("rel");
$('.image_area .images img:not(.visible)').removeClass().addClass("reset");
$('.image_area .images img#' theNum).removeClass().addClass("que");
$('.image_area .images img.visible').fadeOut(500, function() {
$('.image_area .images img.visible').removeClass().attr("style", "display:block;").addClass("reset");
$('.image_area .images img.que').removeClass("que").addClass("visible")
});
$('.image_area .content .text').fadeOut();
$('.image_area .content .text.' theNum).fadeIn();
thistimeout = setTimeout('doSlideshow()', 6000);
return false;
}
$(function() {
thistimeout = setTimeout('doSlideshow()', 6000);
$('.image_area .images img').removeClass().addClass("reset");
$('.image_area .images img#one').removeClass().addClass("visible");
$('.image_links a').click(function() {
clearTimeout(thistimeout);
if ($(this).hasClass("selected")) {
return false;
}
$('.image_links a.selected').removeClass("selected");
$(this).addClass("selected");
var theNum = $(this).attr("rel");
$('.image_area .content .text').fadeOut();
$('.image_area .content .text.' theNum).fadeIn();
$('.image_area .images img:not(.visible)').removeClass().addClass("reset");
$('.image_area .images img#' theNum).removeClass().addClass("que");
$('.image_area .images img.visible').fadeOut(500, function() {
$('.image_area .images img.visible').removeClass().attr("style", "display:block;").addClass("reset");
$('.image_area .images img.que').removeClass("que").addClass("visible")
});
thistimeout = setTimeout('doSlideshow()', 6000);
return false;
});
});
Вот ссылка:
http://b2j3new.zen-host.com
Затронутая область — это верхняя смена изображений. Отлично работает в webkit / gecko
Большое спасибо!
Комментарии:
1. Не передавайте строку в
setTimeout
.2. Привет, SLaks, я извлек строку и установил ее просто как функцию, и по-прежнему безуспешно.. тем не менее, спасибо за отзыв.
Ответ №1:
Попробуйте заменить (2 места)
thistimeout = setTimeout('doSlideshow()', 6000);
с:
thistimeout = setInterval(function() {doSlideshow();}, 6000);
Удалить из doSlideshow:
thistimeout = setTimeout('doSlideshow()', 6000);
И изменить:
clearTimeout(thistimeout);
Для:
clearInterval(thistimeout);
Дайте мне знать, если это поможет.
Комментарии:
1. Привет, Джен, к сожалению, это тоже не сработало. Похоже, что функция работает — поскольку они оба исчезают, но затем следующий элемент не исчезает. Спасибо за вашу постоянную помощь!
Ответ №2:
Похоже, что IE 8 вообще не запускает вашу функцию doSlideshow.
Это рискованный шаг, но в javascript не хватает пары точек с запятой. Я уже видел, что IE чувствителен к такого рода вещам раньше, но, КАК я уже СКАЗАЛ, это досягаемость.
Исправьте две строки, которые не заканчиваются точкой с запятой.
$('.image_area .images img.que').removeClass("que").addClass("visible")
$('.image_area .images img.que').removeClass("que").addClass("visible")
Комментарии:
1. привет, Джен, спасибо за ответ. Я попробовал, но безрезультатно. Довольно странно!
2. Вы пробовали проверять разметку? Известно также, что IE делает странные вещи с js, смешанным с недопустимой разметкой.
3. Моя вторая попытка ответа не удалась. У меня не было всего вашего кода, когда я тестировал. Виноват.