Анимация в IE (проблема)
Мне надо было написать несложный JS анимацию, вот собственно и она:
function Start_animation() {
var change = false;
var index_img = 0;
var class_this = this;
this.images = function() { return new Array ('header', 'header_2', 'header_3'); }
this.animate = function() {
change = (change) ? (false) : (true);
$('#header .header_img img').each(function (index, el) {
if ($(el).closest('.header_img').css('opacity') == 0) $(el).attr('src', '/skin/img/BG/' + get_next() + '.png');
});
$('#header #first_h').animate({opacity: (change) ? (0) : (1)}, 1500);
$('#header #second_h').animate({opacity: (change) ? (1) : (0)}, 1500);
setInterval(this.animate, 5000);
}
var get_next = function() {
index_img++;
index_img = ((index_img + 1) <= class_this.images().length) ? (index_img) : (0);
return class_this.images()[index_img];
}
}
var Top_animation = new Start_animation();
Top_animation.animate();
*** В массиве хранятся названия картинок, чтоб время на понимание сией ерунды не тратили. Все отлично и прекрасно, но он не работает в IE. Дебажил - все норм src картинок меняется (правда скрипт вроде как иногда в IE останавливается ..), но animate не работает вообще. Картинки в PNG-24, возможно связано с этим. И дебагер IE ругался на: setInterval(this.animate, 5000); , вроде как невалидный аргумент .. Переправлял на setInterval(function() { class_this.animate() }, 5000);, везде все работает, конечно же кроме IE :) Очень прошу помочь знающий народ. Заранее благодарен!!! |
Andrey_rtv,
Деио сайт есть ? И юзайте правильную запись в топике - так - это не читабельно http://javascript.ru/formatting |
Спасибо, ваш ответ многое прояснил ...
Насчет форматирования, код настолько просто, что необходимости в форматировании не видел, но вы, вообщем, правы, исправлюсь. Домен сайта на разработку: http://abisoft.oliwa-pro.ru . Можете потестить. |
Andrey_rtv,
Цитата:
function Start_animation() {
var change = false;
var index_img = 0;
var class_this = this;
this.images = function() { return new Array ('header', 'header_2', 'header_3'); }
this.animate = function() {
change = (change) ? (false) : (true);
$('#header .header_img img').each(function (index, el) {
if ($(el).closest('.header_img').css('opacity') == 0) {
$(el).attr('src', '/skin/img/BG/' + get_next() + '.png');
}
});
$('#header #first_h').animate({opacity: (change) ? (0) : (1)}, 1500);
$('#header #second_h').animate({opacity: (change) ? (1) : (0)}, 1500);
setInterval(this.animate, 5000);
}
var get_next = function() {
index_img++;
index_img = ((index_img + 1) <= class_this.images().length) ? (index_img) : (0);
return class_this.images()[index_img];
}
}
var Top_animation = new Start_animation();
Top_animation.animate();
Так - Симпатичнее ? Чичас гляну на сайт - правдо сплю уже |
Andrey_rtv,
У Вас там две библиотеки jQuery Переставьте Наверх с заменой или уберите 2 версию
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script>
|
Спасибо, что глянули. Попробую.
P.S. Насчет кнопочки вы правы |
Я убрал 1 библиотеку.
Очевидно, что ничего не заработало, т.к. при 2х библиотеках работали остальные элементы jQuery и в IE в том числе. И вообще не очень понятно как они должны друг другу мешать .. пространство имен перезаписывают. Но все равно спасибо за совет! |
следите за this в Top_animation.animate.
подсказка - console.log |
Цитата:
|
melky - это напоминает код да винчи, осталось навести меня на путь тайной секты, владеющей сокральным знанием.
Если вас не затруднит - напишите четко, что вы хотели сказать. В чем конкретно проблема? class_this - this объекта Start_animation, ничего плохого пока не вижу. Если в рекурсию поставить alert, то будет выводится сообщение. Проблема скорее всего в opacity и IE и PNG-24, хотя, возможно, я неправ. Консоль IE ругался на неправильный аргумент setInterval(this.animate, 5000); , хотя после подстановки
setInterval(function() {class_this .animate()}, 5000)
- ошибка пропадает, но анимация не появляется. |
| Часовой пояс GMT +3, время: 05:07. |