Переменная не будет назначаться в IE7, но отлично назначается в IE8 + и любом другом браузере - PullRequest
1 голос
/ 12 июня 2011

Итак, в этом немного длинном фрагменте кода:

(function() {
    var element = function(str) {
        return document.getElementById(str);
        },

        parent = document.getElementsByTagName('ul')[0].getElementsByTagName('li'),
        len = parent.length,

        swap_slide = function(slide){
            return function(event) {
                event.preventDefault ? event.preventDefault() : event.returnValue = false;

                var slides = element('main').getElementsByTagName('div'),
                    len = slides.length;
                for (var i=0; i<len; i++) {
                    slides[i].style.display = 'none';
                }
                slide.style.display = 'block';
            }
        };

    for (var i=0; i<len; i++) {
        var link = parent[i].getElementsByTagName('a')[0],
            slide = element(parent[i].getElementsByTagName('a')[0].getAttribute('href').substr(1));

        if (link.addEventListener) {
            link.addEventListener('click', swap_slide(slide), false);
        } else if (link.attachEvent) {
            link.attachEvent('onclick', swap_slide(slide));
        }
    }

    if (!element(location.hash.substr(1)))
        element('slajd-0').style.display = 'block';
    else 
        element(location.hash.substr(1)).style.display = 'block';
})();

все отлично работает в Chrome, Opera, IE9, IE8, Safari, однако в IE7 переменная slide равна null, IE7 сообщаетошибка в функции swap_slide, однако ошибка может быть где-то еще.Я не уверен, что это ошибка области видимости, которую я вызвал, или это просто задержка IE?

EDIT : ошибка, которую выдает IE:

Ошибка: невозможно получить значение свойства 'style': объект имеет значение null или не определено

Спасибо!

1 Ответ

2 голосов
/ 12 июня 2011

Измените

getAttribute('href')

на

getAttribute('href',2)

, чтобы получить href как определено, а не как расширенный URL

http://msdn.microsoft.com/en-us/library/ms536429%28v=vs.85%29.aspx

...