तार्किक स्पष्टीकरण हो सकता है कि चर until
एक वैश्विक चर नहीं है। यदि यह वैश्विक नहीं है (या किसी प्रासंगिक फ़ंक्शन क्लोजर में कैप्चर किया गया है), तो यह तब भी अस्तित्व में नहीं होगा जब सेटइंटरवाल आग लगती है और फ़ंक्शन कॉल के रूप में पारित स्ट्रिंग का मूल्यांकन करने का प्रयास करती है। यह अंतराल सेट करने के लिए एक स्ट्रिंग पास करने के लिए भी एक अच्छा अभ्यास नहीं है, आपको एक वास्तविक जावास्क्रिप्ट फ़ंक्शन पास करना चाहिए।
इस बारे में कि आपको अपना कोड कैसे बदलना चाहिए, यह इस बात पर निर्भर करता है कि क्या आप अंतराल फ़ंक्शन कहलाते समय हर बार अपडेट होने के मूल्य को चाहते हैं या आप इसे चलाने से पहले इसे कैप्चर करना चाहते हैं और उस मान का उपयोग करने के लिए टाइमर अंतराल के बाद के सभी invocations। आपका कोड थोड़ा अस्पष्ट है जिसके लिए आप इसे काम करना चाहते हैं (इसे एक चर में एक बार कैप्चर करना, लेकिन फिर इसे हर बार पास करने का प्रयास करना)। आप में से जब तक कभी अद्यतन करने की मूल्य नहीं करना चाहते हैं, तो आप इसे इस तरह कर सकता है:
var until = $("#time").html();
function updateTime(when) {
$("#time").html(
date("d", when) + " day(s)<br />" +
date("h", when) + " hour(s)<br />" +
date("i", when) + " minute(s)<br />" +
date("s", when) + " second(s)"
);
}
setInterval(function() {updateTime(until);}, 1000);
यह एक समारोह बंद में until
के दायरे को पकड़ने और यह गुमनाम अंतराल कॉलबैक फ़ंक्शन पर ही उपलब्ध होगी । इसे एक स्ट्रिंग में डालकर आप पहले ऐसा कर रहे थे, ऐसा बंद नहीं होगा।
मैंने updateTime(until)
को भी आपके updateTime()
फ़ंक्शन की घोषणा से मेल खाता है।
आपका 'अपडेटटाइम()' फ़ंक्शन अभी तक 'सेट इंटरवल' में कोई पैरामीटर नहीं लेता है, जिसे आप पास करने का प्रयास कर रहे हैं। हो सकता है कि उस विशिष्ट त्रुटि का कारण न हो लेकिन इसे अभी भी सही करने की आवश्यकता है। – MrMisterMan
मैं इसे सटीक डुप्लिकेट में कसम खाता हूं। किसी भी तरह से, यह करीब है: http: // stackoverflow।कॉम/प्रश्न/5766285/setinterval-and-function –