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; |
Возможность передавать дополнительные аргументы для callback-функции в методе setTimeout появилась только в HTML5, и в этих IE не поддеривается.
Поэтому вместо Цитата:
setTimeout(function () { counterFunc(el, increment, end, step); }, step); Или написать свою обертку для IE. |
Поставки оборудования
|
Konversia
|
Часовой пояс GMT +3, время: 20:49. |