是否存在JQuery的一般问题或更具体的问题阻止它在IE中正常工作?这个小提琴是一个叉子。
http://jsfiddle.net/AndyMP/bYrdk/
var images = [
"http://imaging.nikon.com/lineup/dslr/d90/img/sample/pic_003t.jpg",
"http://imaging.nikon.com/lineup/dslr/d90/img/sample/pic_005t.jpg",
"http://imaging.nikon.com/lineup/dslr/d90/img/sample/pic_001t.jpg"
];
var delay = 2000;
var transition = 1000;
for(var i in images)
{
var img = document.createElement("img");
img.src = images[i];
img.onload = function(){
var parent = document.getElementById("content");
parent.insertBefore(this,parent.childNodes[0]);
if(i == images.length - 1)
{
i = 0;
startSlides();
}
}
}
function startSlides()
{
$("#content img:last").delay(delay).fadeTo(transition,0,function(){
$(this).insertBefore($(this).siblings(":first")).fadeTo(0,1);
startSlides();
});
}
答案 0 :(得分:2)
最有可能的问题是您使用for..in
循环来迭代数组。永远不要这样做,因为你将从数组的原型中获取元素并一直返回到Object。
接下来,您没有正确使用Closures。到图像加载时,i
的值将发生变化,并且将等于images.length
(假设您没有被第一个问题搞砸。创建一个新的Closure,其值为i
已锚定:
img.onload = (function(i) {return function() {
var parent = .........................
};})(i);
这些问题不是由jQuery引起的,而是由于您对基本JavaScript的误解造成的。
答案 1 :(得分:1)
div为空,因此它没有任何childNodes,并且为insertBefore()提供的参数parent.childNodes[0]
会导致错误,因为insertBefore()
需要一个节点(并且得到'未定义')
在div中插入至少
或使用jQuery:
$(this).prependTo(parent);