के लिए यह पूछ फ़ंक्शन को कॉल तो हम एक पृष्ठ है:addEventListener बिना मुझे और भी
<span id='container'>
<a href='#' id='first'>First Link</a>
<a href='#' id='second'>Second Link</a>
</span>
और कुछ क्लिक ईवेंट जोड़ना चाहते हैं:
first.addEventListener('click', function(){alert('sup!');})
वर्क्स एक आकर्षण की तरह! हालांकि, जब आप दूसरा तर्क बाहरी कार्य करते हैं:
function message_me(m_text){
alert(m_text)
}
second.addEventListener('click', message_me('shazam'))
यह तुरंत फ़ंक्शन को कॉल करता है। मैं इसे कैसे रोक सकता हूँ? गुस्सा कर देने वाला! http://jsfiddle.net/ey7pB/1/
चूंकि दूसरा पैरामीटर एक समारोह ** संदर्भ ** की अपेक्षा करता है, तो आपको एक प्रदान करने की आवश्यकता है। आपके समस्याग्रस्त कोड के साथ, आप तुरंत फ़ंक्शन को कॉल कर रहे हैं और इसके परिणाम को पार कर रहे हैं (जो * अनिर्धारित * है)। या तो किसी अज्ञात फ़ंक्शन में फ़ंक्शन को कॉल करें (जैसे आपका पहला उदाहरण) या फ़ंक्शन को ** ** एक फ़ंक्शन ** संभवतः आदर्श नहीं) में बदलें। – Ian
यह आदर्श क्यों नहीं है? यह डीआरवाई के खिलाफ लगता है। 4 या तो addEventListeners में मेरे फ़ंक्शन को कॉपी करने के लिए जो सेटिंग कर रहा है, नहीं? – LittleBobbyTables
एक और विकल्प आवश्यक संदेश को तत्व पर एक विशेषता के रूप में संग्रहीत करना है, फिर फ़ंक्शन को 'second.addEventListener (' क्लिक करें ', message_me) के रूप में बाध्य करें और इसे पैरामीटर के बजाय विशेषता से संदेश पुनर्प्राप्त करें। – nnnnnn