Javascript 跟进:预加载图像引发未定义错误
几周前,我问过如何在画廊中预装图片。虽然解决方案可行,但现在出现的问题是,如果我单击“下一步”预加载接下来的三个图像,而前面只有两个图像,那么它会运行三次循环,Firebug会抛出一个未定义的错误Javascript 跟进:预加载图像引发未定义错误,javascript,jquery,image,preload,Javascript,Jquery,Image,Preload,几周前,我问过如何在画廊中预装图片。虽然解决方案可行,但现在出现的问题是,如果我单击“下一步”预加载接下来的三个图像,而前面只有两个图像,那么它会运行三次循环,Firebug会抛出一个未定义的错误 $('#next').bind('click',function(){ var $this = $(this); var $nextimage = $('#content img:nth-c
$('#next').bind('click',function(){
var $this = $(this);
var $nextimage = $('#content img:nth-child('+parseInt(current+2)+')');
var next = $nextimage.next();
for (var i = 0; i < 3; i++)
{
var img = new Image();
img.src = next.attr("alt");
next = next.next();
}
navigate($nextimage,'right');
});
代码如下:
$('#next').bind('click',function(){
var $this = $(this);
var $nextimage = $('#content img:nth-child('+parseInt(current+2)+')');
var next = $nextimage.next();
for (var i = 0; i < 3; i++)
{
var img = new Image();
img.src = next.attr("alt");
next = next.next();
}
navigate($nextimage,'right');
});
$('#next').bind('click',function(){
var$this=$(this);
var$nextimage=$('#内容img:n子项('+parseInt(当前+2)+'));
var next=$nextimage.next();
对于(变量i=0;i<3;i++)
{
var img=新图像();
img.src=next.attr(“alt”);
next=next.next();
}
导航($nextimage,'right');
});
如何捕获未定义的错误,即如果只有2或1个图像,它应该只预加载这些图像,而不在第三次或第二次运行循环以抛出错误?$('#next').bind('click',function(){
$('#next').bind('click',function(){
var $this = $(this);
var $nextimage = $('#content img:nth-child('+parseInt(current+2)+')');
var next = $nextimage.next();
for (var i = 0; i < 3; i++)
{
var img = new Image();
img.src = next.attr("alt");
next = next.next();
}
navigate($nextimage,'right');
});
$('#next').bind('click',function(){
var $this = $(this);
var $nextimage = $('#content img:nth-child('+parseInt(current+2)+')');
var next = $nextimage.next();
for (var i = 0; i < 3; i++)
{
if ( !next.length ) break; // This line stops your loop if there isn't any next
var img = new Image();
img.src = next.attr("alt");
next = next.next();
}
navigate($nextimage,'right');
});
var$this=$(this);
var$nextimage=$('#内容img:n子项('+parseInt(当前+2)+'));
var next=$nextimage.next();
对于(变量i=0;i<3;i++)
{
if(!next.length)break;//如果没有下一行,此行将停止循环
var img=新图像();
img.src=next.attr(“alt”);
next=next.next();
}
导航($nextimage,'right');
});
编辑:
$('#next').bind('click',function(){
var $this = $(this);
var $nextimage = $('#content img:nth-child('+parseInt(current+2)+')');
var next = $nextimage.next();
for (var i = 0; i < 3; i++)
{
var img = new Image();
img.src = next.attr("alt");
next = next.next();
}
navigate($nextimage,'right');
});
可能DOM中有下一个元素,但没有属性“alt”:
$('#next').bind('click',function(){
var $this = $(this);
var $nextimage = $('#content img:nth-child('+parseInt(current+2)+')');
var next = $nextimage.next();
for (var i = 0; i < 3; i++)
{
var img = new Image();
img.src = next.attr("alt");
next = next.next();
}
navigate($nextimage,'right');
});
$('#next').bind('click',function(){
变量$this=$(this),
$nextimage=$('#内容img:n子项('+parseInt(当前+2)+')),
$next=$nextimage.next();
对于(变量i=0;i<3;i++){
if(!$next.length)break;//如果没有下一个循环,此行将停止循环
var img=新图像();
img.src=next.attr(“alt”);
$next=$next.next(“[alt]”;//只接受具有alt属性的元素。
}
导航($nextimage,'right');
});
我不知道为什么,但它仍然抛出未定义的错误。Chrome调试器在这一行显示:img.src=next.attr(“alt”)代码>