如何修复'未捕获的TypeError:数字不是函数错误'和'无法加载资源'错误

时间:2010-10-26 11:44:59

标签: javascript jquery

为什么代码有错误?

var images = ['/test/img/Gallery/large/4cba0c8a-4acc-4f4a-9d71-0a444afdf48d.jpg','/test/img/Gallery/large/4cba0ca8-2158-41af-829a-0a444afdf48d.jpg','/test/img/Gallery/large/4cbc549a-5228-433f-b0bc-0a444afdf48d.jpg'];
$('.triggerNext').click(function(){
    nextImage();
    return false;
});
function nextImage(){
    currentImage = $('.Pagepage:eq(0)').val();
    nextImage = parseInt(currentImage)+1;
    $('#imageCurrent').attr('src',images[nextImage]);
    $('#imageCurrent') .css('position','absolute').css('left',($(window).width()- $('#imageCurrent').width() )/2);
    $('.Pagepage').val(nextImage);
}

第一次正确运行但点击后出错。

然而,下面的代码运行正常,没有任何错误:

var images = ['/test/img/Gallery/large/4cba0c8a-4acc-4f4a-9d71-0a444afdf48d.jpg','/test/img/Gallery/large/4cba0ca8-2158-41af-829a-0a444afdf48d.jpg','/test/img/Gallery/large/4cbc549a-5228-433f-b0bc-0a444afdf48d.jpg'];
$('.triggerNext').click(function(){
    currentImage = $('.Pagepage:eq(0)').val();
    nextImage = parseInt(currentImage)+1;
    $('#imageCurrent').attr('src',images[nextImage]);
    $('#imageCurrent') .css('position','absolute').css('left',($(window).width()- $('#imageCurrent').width() )/2);
    $('.Pagepage').val(nextImage);
    return false;
});

alt text

2 个答案:

答案 0 :(得分:6)

好像你在这里覆盖了function

nextImage = parseInt(currentImage)+1;

更改functionvariable的名称。更好的是,不要使用global namespace。无论如何,你不能覆盖函数中的name,你正在覆盖函数本身。

在上述行之后,nextImage包含一个显然无法执行的Number

直接来自评论

  

只需替换nextImage = parseInt(currentImage)+1; with var nextImage => parseInt函数(currentImage)+1; - Alin Purcaru

使用var语句,也可以避免nextImage进入全局命名空间。

答案 1 :(得分:0)

使用:

var nextImage = parseInt(currentImage)+1;

所以你不要覆盖你的功能名称