变量不会在IE7中分配,但在IE8 +和任何其他浏览器中分配完全正常

时间:2011-06-12 09:10:41

标签: javascript javascript-events internet-explorer-7

所以,在这个稍微冗长的代码片段中:

(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变量slidenull,IE7报告函数swap_slide中的错误,但错误可能在别的地方。我不确定这是否是我造成的范围错误,还是简单的IE延迟?

编辑:IE吐出的错误是:

  

错误:无法获取属性“style”的值:object为null或undefined

谢谢!

1 个答案:

答案 0 :(得分:2)

更改

getAttribute('href')

getAttribute('href',2)

获取定义的href而不是扩展的URL

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