在这个略长的代码片段中:
(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 延迟?
编辑:IE 吐出的错误是:
Error: Unable to get value of the property 'style': object is null or undefined
最佳答案
改变
getAttribute('href')
到
getAttribute('href',2)
获取定义的 href 而不是扩展的 URL
http://msdn.microsoft.com/en-us/library/ms536429%28v=vs.85%29.aspx
关于javascript - 变量不会在 IE7 中分配,但在 IE8+ 和任何其他浏览器中分配得很好,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6321126/