पर कॉल नहीं कर रहा है सेटटाइमआउट फ़ंक्शन हमेशा मुझे परेशानी देता है। अभी मेरे पास एक ऐसा फ़ंक्शन है जो रिकर्सिव है (सेटटाइमआउट के माध्यम से स्वयं को कॉल करता है) और तत्वों की ऊंचाई को बदल देता है।जावास्क्रिप्ट का सेटटाइमआउट फ़ंक्शन
फ़ंक्शन दो तर्क भेजे गए हैं: तत्व को बदलने के लिए और तत्व अधिकतम ऊंचाई। फ़ंक्शन का उद्देश्य तत्व को प्रकट करना है, या निरंतर गति से "स्लाइड डाउन" करना है। मुझे पता है कि मैं शायद इस समस्या को jQuery के साथ हल कर सकता हूं, लेकिन मैं अपना खुद का काम करने की कोशिश कर रहा हूं।
function slide_down(element, max_height)
{
if(element.clientHeight < max_height)
{
var factor = 10;
var new_height = (element.clientHeight + factor >= max_height) ? max_height : (element.clientHeight + factor);
element.style.height = new_height + 'px';
var func_call = 'slide_down(' + element + ', ' + max_height + ');';
window.setTimeout(func_call, 10);
}
}
जब मैंने प्रारंभ में फ़ंक्शन शुरू किया है तो मैंने तर्कों का परीक्षण किया है। max_height 20 पर सेट है क्योंकि यह तत्व वांछित ऊंचाई है (मुझे यह मान .scrollHeight से मिला है)।
जब कार्य पूरा हो जाता है, तो मैं इसे तब तक कॉल करना चाहता हूं जब तक max_height तत्व की ऊंचाई न हो। मैं करता हूं कि इस सेटटाइमआउट कॉल के साथ:
var func_call = 'slide_down(' + element + ', ' + max_height + ');';
window.setTimeout(func_call, 10);
और यह काम नहीं कर रहा है। यह काम करता है:
var func_call = 'alert(1);';
window.setTimeout(func_call, 10);
मैंने फ़ंक्शन कॉल को सीधे सेटटाइमआउट कथन में डालने का भी प्रयास किया है, फिर भी काम नहीं करता है।
ध्यान दें कि तत्व की ऊंचाई पहले पुनरावृत्ति को बदलती है, फ़ंक्शन केवल स्वयं को कॉल नहीं करता है। तो तत्व चर सही ढंग से सेट किया गया है, और मैंने max_height को प्रदर्शित करने के लिए चेतावनी() का उपयोग किया जो भी सही है।
alert(func_call);
अलर्ट इस:
slide_down([object HTMLParagraphElement], 20);
धन्यवाद। मैं इसकी तलाश में था। – HOT