我有一个函数,由间隔函数调用,点击一个链接,我的链接将清除间隔,并再次调用相同的函数。
调用这些类型会做不同的工作,但我不知道如何找到,我的间隔函数是调用我的函数还是onclick函数调用我的函数..
如何找到我的函数调用者?
这是我的功能
function slideshow (){
$('#slide_viewer ul').css({marginLeft : -(slideWidth * currentSlide)+'px'});
if(currentSlide == (totalSlides-1)){
currentSlide = 0;
}else{
currentSlide++;
}
}
var myInterval = setInterval(slideshow,3000);
$('a.control').click(function(){
currentSlide = ($(this).attr('id') == "prev") ? (currentSlide = currentSlide-1) : (currentSlide = currentSlide+1);
slideshow ();
})
答案 0 :(得分:2)
您可以使用
arguments.callee.caller
找到谁在调用你的功能。
更简单的解决方案是在调用slideShow()时翻转全局变量。因此,当setInterval调用它时,您的全局变量将为false。
您也可以使用闭包和参数来区分案例
function slideshow(var autocall)
{
//your stuff depending of autocall false or true
}
var automaticall = function()
{
var autocall = true;
slideshow(autocall);
}
var myinterval = setInterval( automaticall , 3000 );
$('a.control').click(function(){
currentSlide = ($(this).attr('id') == "prev") ? (currentSlide = currentSlide-1) : (currentSlide = currentSlide+1);
slideshow (false);
})
答案 1 :(得分:1)
评论链接到一篇好帖子,或者您可以通过间隔调用将某些内容传递给您的函数:
var myInterval = setInterval(function()
{
slideshow("interval");
},3000);
答案 2 :(得分:0)
有被叫方和来电者功能。但是今天在大多数浏览器中这些都被折旧T.T