2011-07-04 23 views
2

我有一個函數,這是由間隔函數調用,以及點擊一個鏈接,我的鏈接將清除間隔,並再次調用相同的功能。如何查找,哪一個正在調用我的功能?

調用此類型會做不同的工作,但我不知道怎麼找,我的間隔功能是否調用我的函數或函數的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

可能重複的[你如何找到調用者函數在JavaScript?](http://stackoverflow.com/questions/280389/how-do-you-find-out調用者函數在JavaScript) – Chandu

+0

這是爲了調試或代碼功能? –

+0

這不是幫助我..任何示例代碼? – 3gwebtrain

回答

2

您可以使用

arguments.callee.caller 

尋找誰喊你的函數。

更簡單的解決方案是在調用slideShow()時翻轉全局變量。所以當setInterval調用它時,你的全局變量將是錯誤的。

你也可以使用一個封閉和一個參數來區分的情況下,以及

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); 
}) 
+0

結果爲空。 – 3gwebtrain

1

評論鏈接到一個好的職位,或者你可以從間隔呼叫傳遞的東西給你的函數:

var myInterval = setInterval(function() 
{ 

    slideshow("interval"); 

},3000); 
0

有被調用函數和調用者函數。但是,這些在今天的大多數瀏覽器貶值TT

相關問題