2010-05-07 22 views
10

के माध्यम से एक सेट इंटरवलल लूप को मारने का कोई तरीका है, इसलिए, मुझे ऑनक्लिक से जुड़े setInterval का उपयोग करके इस फ़ंक्शन में काम करने के लिए एक अनंत लूप मिला है। समस्या यह है कि, मैं ऑनक्लिक में clearInterval का उपयोग करके इसे रोक नहीं सकता। मुझे लगता है कि ऐसा इसलिए है क्योंकि जब मैं ऑनक्लिक पर एक स्पष्ट अंतराल संलग्न करता हूं, तो यह एक विशिष्ट अंतराल को मारता है और फ़ंक्शन पूरी तरह से नहीं करता है। क्या मैं कुछ भी कर सकता हूं ऑनक्लिक के माध्यम से सभी अंतराल को मार दें?क्या ऑनक्लिक बटन

यहाँ मेरी .js file और कॉल मैं बना रहा हूं

input type="button" value="generate" onClick="generation(); 

input type="button" value="Infinite Loop!" onclick="setInterval('generation()',1000);" 

input type="button" value="Reset" onclick="clearInterval(generation(),80;" // This one here is giving me trouble. 

उत्तर

-1

खुद के बजाय setInterval को generation(); कॉल setTimeout है कर रहे हैं। यदि आप setTimeout को आसानी से चलने से रोकने के लिए फ़ंक्शन में तर्क करते हैं तो आप थोड़ा सा उपयोग कर सकते हैं।

var genTimer 
var stopGen = 0 

function generation() { 
    clearTimeout(genTimer) ///stop additional clicks from initiating more timers 
    . . . 
    if(!stopGen) { 
     genTimer = setTimeout(function(){generation()},1000) 
    } 
} 

}

+0

यह सीधे सवाल का जवाब नहीं है, तो (अंतराल === नल) होना चाहिए, अगर (अंतराल –

4

clearInterval इस तरह, setInterval के रिटर्न मान पर लागू किया जाता है:

var interval = null; 
theSecondButton.onclick = function() { 
    if (interval === null) { 
     interval = setInterval(generation, 1000); 
    } 
} 
theThirdButton.onclick = function() { 
    if (interval !== null) { 
     clearInterval(interval); 
     interval = null; 
    } 
} 
+0

"वहाँ एक onclick बटन के माध्यम से एक setInterval पाश को मारने के लिए कोई तरीका है"! == शून्य) – Hatim

+0

@ हातिम: फिक्स्ड। – kennytm

20

setInterval रिटर्न एक हैंडल, आप कि इतने संभाल की जरूरत है आप इसे

साफ कर सकते हैं सबसे आसान, अपने एचटीएमएल हेड में हैंडल के लिए एक var बनाएं, फिर अपने ऑनक्लिक में var

का उपयोग करें
// in the head 
var intervalHandle = null; 

// in the onclick to set 
intervalHandle = setInterval(.... 

// in the onclick to clear 
clearInterval(intervalHandle); 

http://www.w3schools.com/jsref/met_win_clearinterval.asp

संबंधित मुद्दे