2013-08-12 5 views
2

Я сделал фейдер изображения, используя 2 <div> s (одно изображение, а другое - это ul, содержащее несколько изображений) сценарий отлично работает на Firefox и Safari, но не работает должным образом Chrome, он просто делает первый увядает, а затем он останавливается сценарий этоsetInterval не работает должным образом с хромом

$("#second").css({ 
    opacity: 0.0 
}); 

$(function() { 
    setInterval("rotateImages()", 4000); 
}); 

function rotateImages() { 

    if ($("#first").css("opacity") == 1) { 
     $("#first").animate({ 
      opacity: 0.0 
     }, 1500); 
     $("#second").animate({ 
      opacity: 1.0 
     }, 1500); 
    } else { 
     $("#second").animate({ 
      opacity: 0.0 
     }, 1500); 
     $("#first").animate({ 
      opacity: 1.0 
     }, 1500); 
    }; 

}; 

Я не знаю, где именно проблема и как сделать работу скрипта на всех браузерах. любая помощь была бы оценена

Благодаря

+1

Можете ли вы сделать jsfiddle.net? – mplungjan

+0

Работает отлично для меня в Chrome http://jsfiddle.net/JLC2q/ – epascarello

+0

NITPICK: не продолжайте использовать '$ (" # XXXX ")' снова и снова, храните его в переменной и используйте, чтобы вы не были постоянно делая DOM, чтобы получить элемент, который вы уже нашли один раз. – epascarello

ответ

-1

() Удалить и котировки

setInterval(rotateImage, 4000); 
+1

Однако это не является причиной – mplungjan

+0

@mplungjan Спасибо за редактирование. Я думал, что это синтаксическая ошибка. наблюдая за закрытием, чтобы понять это. – Praveen

+0

remove() заставляет его перестать работать – user2674916

-2
$(function(){ 
    setInterval("rotateImages()", 4000); 
}); 

изменение

setInterval(function(rotateImages()), 4000); 
+1

так же, как setInterval (rotateImages, 4000); и, увы, не решит его в любом случае – mplungjan

2

Это работает для меня

Live Demo

$(function() { 
    $("#second").css({ 
    opacity: 0.0 
    }); 
    setInterval(rotateImages, 4000);  
}); 
function rotateImages() { 
    if ($("#first").css("opacity") == 1) { 
     $("#first").animate({ 
      opacity: 0.0 
     }, 1500); 
     $("#second").animate({ 
      opacity: 1.0 
     }, 1500); 
    } else { 
     $("#second").animate({ 
      opacity: 0.0 
     }, 1500); 
     $("#first").animate({ 
      opacity: 1.0 
     }, 1500); 
    }; 

}; 

Однако это может быть гораздо проще.

Например this almost works, но this one is better

$(function() { 
    var $first = $("#first"); 
    var $second = $("#second"); 
    $("#second").hide(); 

    var tId = setInterval(function() { 
     $first.fadeToggle("slow",function() { 
     $second.fadeToggle("slow"); 
     })  
    },4000);   
}); 
+1

Исходный код также работал ... – epascarello

+0

За исключением того, что его нужно было обернуть в $ (function() {} – mplungjan

+0

Не, если код после элемента и что НЕ будет влиять на цикл из-за того, он не проверяет нуль на втором элементе. – epascarello

Смежные вопросы