Javascript-форум (https://javascript.ru/forum/)
-   Internet Explorer (https://javascript.ru/forum/css-html-internet-explorer/)
-   -   html() и IE 8-9 (https://javascript.ru/forum/css-html-internet-explorer/34220-html-i-ie-8-9-a.html)

rustleofstars 24.12.2012 20:42

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;

Amphiluke 24.12.2012 21:15

Возможность передавать дополнительные аргументы для callback-функции в методе setTimeout появилась только в HTML5, и в этих IE не поддеривается.
Поэтому вместо
Цитата:

setTimeout(counterFunc, step, el, increment, end, step);

нужно использовать
setTimeout(function () { counterFunc(el, increment, end, step); }, step);


Или написать свою обертку для IE.

llefferrru 22.02.2013 15:37

Поставки оборудования
 
Продажа оборудования:
- гидравлический буровой стол;
- сферический грейфер.
- леффер.

weiryhh

BUPTPRUPUNLAG 01.04.2013 23:13

Konversia


Часовой пояс GMT +3, время: 06:01.