jquery - TypeError : arguments. callee.caller 不是一个函数

标签 jquery

我希望有人可以帮助我纠正我在使用自定义脚本时遇到的一些问题。我接管了一个网站的管理,以下代码似乎有问题:

/*  jQUERY CUSTOM FUNCTION 
------------------------------ */
jQuery(document).ready(function($) {
$('.ngg-gallery-thumbnail-box').mouseenter(function(){
   var elmID = "#"+this.id+" img";
   $(elmID).fadeOut(300);
});

$('.ngg-gallery-thumbnail-box').mouseleave(function(){
   var elmID = "#"+this.id+" img";
   $(elmID).fadeIn(300);
});

var numbers = $('.ngg-gallery-thumbnail-box').size();

function A(i){
    setInterval(function(){autoSlide(i)}, 7000);
}
A(0);

    function autoSlide(i) {
        var numbers = $('.ngg-gallery-thumbnail-box').size();
        var elmCls = $("#ref").attr("class");
        $(elmCls).fadeIn(300);
        var randNum = Math.floor((Math.random()*numbers)+1);
        var elmClass = ".elm"+randNum+" img";
        $("#ref").attr("class", elmClass);
        $(elmClass).fadeOut(300);
        setInterval(function(){arguments.callee.caller(randNum)}, 7000);
    }
});

我在 Firebug 控制台中看到的错误是“TypeError:arguments.callee.caller 不是函数。我刚刚开始使用 jQuery,不知道如何解决此问题。

任何有关更改代码以使其仍然有效但不会抛出所有这些错误的帮助(如果我加载该网站并让它在浏览器中放置 10 分钟,我会在控制台中看到超过 10000 个错误)不胜感激!

最佳答案

setInterval内部,arguments可能不是你想象的那样。调用时,每个函数都有自己的参数数组。当 setInterval 运行时,传递给它的函数被调用,因此 arguments 用于该函数(匿名函数)。

我发现您正在尝试使用 arguments.callee.caller 来获取调用间隔的函数,在本例中为 autoSlide。那是行不通的。传递给 setInterval 的函数不是autoSlide 调用,而是由浏览器调用。 autoSlide 所做的只是调用 setInterval,因此 arguments.callee.callernull

既然您知道函数的名称,autoSlide,您就可以使用它。

setInterval(function(){
    autoSlide(randNum);
}, 7000);

更新:您确定首先需要在 autoSlide 中使用 setInterval 吗?您的代码调用 A(0),它已使用 setInterval 调用 autoSlide。您真的需要两个间隔吗?

关于jquery - TypeError : arguments. callee.caller 不是一个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17348128/

相关文章:

javascript - 响应式网站上独立的桌面和移动 jQuery 功能

jquery - 表单错误中的字体格式

javascript - 清除特定输入字段的范围文本

javascript - Star 不显示 jquery bar 评级

javascript - jQuery 中的点击功能是否有可能等待 ajax 完成然后执行一些代码?

php - 删除时的两个确认对话框

javascript - 如何将两个具有不同参数的函数的代码结合起来?

javascript - 声明变量 jQuery 和 JS

javascript - 如何在同一页面中通过 Ajax 获取实时输入框字段值来分配 php 变量

javascript - 语法错误: missing ) after argument list on simple function