का उपयोग कर लूप में बनाए गए जावास्क्रिप्ट टाइमर या अंतराल मैं प्रत्येक जोड़े को जांचने के लिए कुछ तत्वों पर टाइमर या अंतराल पाश सेट करने के लिए jQuery का उपयोग कर रहा हूं। मैंने टाइमर सेट करने और यह जांचने की कोशिश की है कि मुझे इसे पुनरारंभ करना चाहिए, या सेटिंग और अंतराल और जांच करनी चाहिए कि मुझे इसे रोकना चाहिए या नहीं।बंदरगाह
var mytimers = new Array();
$('div.items').each(function() {
myID = $(this).attr('id');
mytimers[myID] = setInterval(function() { myFunction(myID) } , 3000)
});
function myFunction(param) {
alert(param);
if (something()) {
clearInterval(mytimers[param]);
}
}
आईडी वर्ग मदों के लिए की ID_1, ID_2, id_3 हैं:
सरलीकृत हालांकि, इस बुनियादी तौर पर मैं क्या जरूरत है। लेकिन मुझे बस 3 अलर्ट मिलते हैं जो सभी id_3 देते हैं। मेरे कोड में मैंने 'यह' पास करने की कोशिश करना बंद कर दिया, लेकिन इस मुद्दे को समझने के लिए इसे सरल बना दिया।
प्रत्येक बार चर को एक नए पते पर कॉपी करने के लिए मैं इसे कैसे प्राप्त कर सकता हूं? मुझे पता है मुझे बंद करने का उपयोग करने की जरूरत है। ऐसा लगता है कि अन्य var No mater क्या संदर्भित किया जा रहा है।
मैं बहुत तरह टाइमर के साथ एक पाश के लिए यह सरल बनाने की कोशिश की:
function tester(item) {
return function() {
alert(item);
};
}
for(x=1;x<=3;x++) {
setTimeout('(function() { tester(x) })(x)' , 3000);
}
लेकिन मुझे लगता है मैं सिर्फ अपनी समस्या बदतर बना रही हूँ और कहा कि कुछ भी करने को नहीं लगता है।
मैंने पिछले प्रश्नों की खोज की है, लेकिन अधिकांश इसे विशिष्ट मुद्दे को कम करने के बजाय अतिरिक्त कोड से भरे हुए हैं और किसी अन्य तरीके से हल किए गए हैं। मैं समझना चाहता हूं कि यह उदाहरण काम करने के द्वारा यह कैसे बेहतर काम करता है। मैंने इसे लिखते समय प्रबंधन किया, यह पता लगाने के लिए कि मैं टाइमर को एक सहायक कार्य के साथ सेट कर सकता हूं।
function tester(item)
alert(item);
function myTimer(item)
setInterval(function() { tester(item); }, 3000);
for(x=1;x<=3;x++)
myTimer(item);
इसके बिना यह कैसे किया जा सकता है? क्या कोई बेहतर तरीका है?
आपको वास्तव में * सभी * आपके स्थानीय चर को 'var' के साथ घोषित करना चाहिए, जिसमें लूप इंडेक्स शामिल हैं। – Pointy