Javascript 跟进:预加载图像引发未定义错误

Javascript 跟进:预加载图像引发未定义错误,javascript,jquery,image,preload,Javascript,Jquery,Image,Preload,几周前,我问过如何在画廊中预装图片。虽然解决方案可行,但现在出现的问题是,如果我单击“下一步”预加载接下来的三个图像,而前面只有两个图像,那么它会运行三次循环,Firebug会抛出一个未定义的错误 $('#next').bind('click',function(){ var $this = $(this); var $nextimage = $('#content img:nth-c

几周前,我问过如何在画廊中预装图片。虽然解决方案可行,但现在出现的问题是,如果我单击“下一步”预加载接下来的三个图像,而前面只有两个图像,那么它会运行三次循环,Firebug会抛出一个未定义的错误

 $('#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”)