Тема: html() и IE 8-9
Показать сообщение отдельно
  #1 (permalink)  
Старый 24.12.2012, 20:42
Интересующийся
Отправить личное сообщение для rustleofstars Посмотреть профиль Найти все сообщения от rustleofstars
 
Регистрация: 30.03.2012
Сообщений: 24

html() и IE 8-9
Доброго времени суток. Столкнулся со следующей проблемой. Подскажите, пожалуйста, ее решение. Вот скрипт который визуально с заданным интервалом "накручивает" значение от опции start в опцию end :
var $j = jQuery.noConflict();

$j(document).ready(function(){

    ;(function($j) {        
         $j.fn.counter = function(options) {
            
            var defaults = {
                start: 0,
                end: 10,
                time: 10,
                step: 1000,
                callback: function() { }
            }
            var options   = $j.extend(defaults, options);
            
            var counterFunc = function(el, increment, end, step) {
                var value = parseInt(el.html(), 10) + increment;
                if(value >= end) {
                    el.html(Math.round(end));
                    options.callback();
                } else {
                    el.html(Math.round(value));
                    setTimeout(counterFunc, step, el, increment, end, step);
                }
            }
            
            $j(this).html(Math.round(options.start));
            var increment = (options.end - options.start) / ((1000 / options.step) * options.time);
            
            (function(e, i, o, s) {
                setTimeout(counterFunc, s, e, i, o, s);
            })($j(this), increment, options.end, options.step);
        }
    })($j);

});


Вызывается так :

$j('#main-counter1').counter({
			start: 0,
			end: 15923,
			time: 0.1,
			step: 1,
			callback: function() {}
		});


Работает нормально во всех браузерах кроме IE 8-9 (ниже версии не проверял. В IE10 работает). Выдает в IE 8-9 такую ошибку:
SCRIPT5007: Не удалось получить свойство "html" ссылки, значение которой не определено или является NULL
Ругается на строку скрипта var value = parseInt(el.html(), 10) + increment;
Ответить с цитированием