myhandle.onclick = myfunction (param1, param2);
यह जावास्क्रिप्ट स्तर पर एक आम शुरुआत त्रुटि है, और कुछ ऐसा नहीं है जो पुस्तकालय वास्तव में आपके लिए ठीक कर सकते हैं।
आप बताए नहीं कर रहे हैं myfunction
एक क्लिक हैंडलर के रूप में, आप myfunction
बुला, param1 और तर्कों के रूप param2 के साथ, और onclick
को समारोह की वापसी मान निर्दिष्ट कर रहे हैं। myfunction
कुछ भी वापस नहीं करता है, ताकि आप onclick
, जो कोई असर नहीं होगा करने के लिए undefined
बताए होगी ..
क्या आपका मतलब है खुद myfunction
के लिए एक संदर्भ आवंटित करने के लिए है:
myhandle.onclick= myfunction;
पास करने के लिए अपने मूल्यों को बंद करने के लिए आपके पास कुछ अतिरिक्त तर्कों को कार्य करें, जो आमतौर पर अज्ञात इनलाइन फ़ंक्शन के साथ किया जाता है। यह आप की जरूरत भी है, तो (हालांकि किसी भी तरह से आप जहां घटना वस्तु एक तर्क के रूप में पारित नहीं किया गया है IE के लिए एक बैकअप योजना की जरूरत है) पर घटना गुजर की देखभाल कर सकते हैं:
myhandle.onclick= function(event) {
myfunction(param1, param2, event);
};
ECMAScript पांचवें संस्करण में, जो जावास्क्रिप्ट के भविष्य के संस्करण हो जाएगा, आप और भी अधिक आसानी से इस लिख सकते हैं: (। window
this
के लिए एक डमी मूल्य है जो आप इस मामले में की जरूरत नहीं होगी होने के साथ)
myhandle.onclick= myfunction.bind(window, param1, param2);
हालांकि, बाद से आज के कई ब्राउज़र नहीं करते हैं यदि आप इस विधि का उपयोग करना चाहते हैं तो आपको पांचवें संस्करण का समर्थन करना होगा, आपको पुराने ब्राउज़र के लिए एक कार्यान्वयन प्रदान करना होगा।कुछ पुस्तकालयों में पहले से ही एक शामिल है; यहाँ एक और स्टैंडअलोन है।
if (!('bind' in Function.prototype)) {
Function.prototype.bind= function(owner) {
var that= this;
var args= Array.prototype.slice.call(arguments, 1);
return function() {
return that.apply(owner,
args.length===0? arguments : arguments.length===0? args :
args.concat(Array.prototype.slice.call(arguments, 0))
);
};
};
}
बहुत बहुत धन्यवाद! यह मुझे खूबसूरती से बताता है। – Rajat