Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #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;
Ответить с цитированием
  #2 (permalink)  
Старый 24.12.2012, 21:15
Аватар для Amphiluke
   ☽
Отправить личное сообщение для Amphiluke Посмотреть профиль Найти все сообщения от Amphiluke
 
Регистрация: 07.01.2011
Сообщений: 254

Возможность передавать дополнительные аргументы для callback-функции в методе setTimeout появилась только в HTML5, и в этих IE не поддеривается.
Поэтому вместо
Цитата:
setTimeout(counterFunc, step, el, increment, end, step);
нужно использовать
setTimeout(function () { counterFunc(el, increment, end, step); }, step);


Или написать свою обертку для IE.
Ответить с цитированием
  #3 (permalink)  
Старый 22.02.2013, 15:37
Новичок на форуме
Отправить личное сообщение для llefferrru Посмотреть профиль Найти все сообщения от llefferrru
 
Регистрация: 22.02.2013
Сообщений: 1

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

weiryhh
Ответить с цитированием
  #4 (permalink)  
Старый 01.04.2013, 23:13
Новичок на форуме
Отправить личное сообщение для BUPTPRUPUNLAG Посмотреть профиль Найти все сообщения от BUPTPRUPUNLAG
 
Регистрация: 01.04.2013
Сообщений: 1

Konversia
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Типографика и HTML код Manjuriano (X)HTML/CSS 3 23.11.2011 12:22
Создание HTML страниц Sportlife89 (X)HTML/CSS 7 03.06.2011 15:04
Передача кода HTML Владимир Седов Общие вопросы Javascript 2 12.04.2011 16:48
Очень нужно.. Отправка HTML куски в JSON от сервера используя Ajax bivnikus jQuery 8 26.10.2010 23:54
Динамические html элементы sky Элементы интерфейса 2 07.03.2010 11:58