2012-09-19 15 views
5

मैं एक दस्तावेज़ में तत्वों की एक सरणी पर एक onClick ईवेंट लागू करने के लिए कोशिश कर रहा हूँ के लिए, इस तरह:एक में तत्व सरणी के लिए onClick लागू करने लूप

for (var i = 0; i < myElems.length; i++) 
    myElems[i].onClick = "someFunction(this)"; 

कोड एक init के अंदर रखा जाता है() फ़ंक्शन बॉडी टैग की ऑनलोड घटना के लिए। मैंने देखा कि जब दस्तावेज़ लोड होता है, तो फ़ंक्शन काम नहीं करेंगे।

मैंने देखा है, कि अगर मैं एक सूचना जोड़ने() मुझे बताने की समारोह समस्या है अगर:

for (var i = 0; i < myElems.length; i++) 
    myElems[i].onClick = "alert('It worked!')"; 

दस्तावेज़ लोड और तत्वों के सभी के लिए चेतावनी प्रदर्शन करेंगे, कभी बिना इस बात को ध्यान में रखते हुए कि मैंने वास्तव में तत्व पर क्लिक किया है या नहीं।

मैं क्या गलत कर रहा हूं?

+0

आप इनिट फ़ंक्शन को कैसे कॉल कर रहे हैं? – PitaJ

उत्तर

2

संपत्ति नाम onclick है।

onClick भी मान्य HTML जा रहा है, हालांकि, जे एस में मौजूद नहीं है के रूप में यह केस-संवेदी है।

इसके अलावा, आप यह निर्दिष्ट करने के लिए एक समारोह संदर्भ या डेविड के रूप में अभिव्यक्ति जवाब (+1) की है।

Fiddle

3

आप एक समारोह के लिए 'onclick' हैंडलर आवंटित करने के लिए की जरूरत है:

for (var i = 0; i < myElems.length; i++) 
    myElems[i].onclick = function() { someFunction(this);}; 

अपने 'चेतावनी' नियत यह सक्रिय कर देगा सीधे कॉल (के रूप में आप देख रहे हैं)। आप जो करना चाहते हैं वह आपके हैंडलर को उस फ़ंक्शन पर असाइन करें जिसे ईवेंट को निकाल दिया जाता है।

+1

श्वास, मुझे इसे हराया। –

+0

क्या @ डेविड होरस्टर कह रहा है कि आप अपने 'ऑनक्लिक' हैंडलर को स्ट्रिंग में असाइन कर रहे थे, न कि फ़ंक्शन स्वयं। –

+1

ठीक है, मुझे मूर्खतापूर्ण लगता है। हैंडलर एक आकर्षण की तरह काम करता है। मैंने "ऑनक्लिक" की बजाय "ऑनक्लिक" होने की विधि के बारे में टिप्पणियां भी देखीं। आप सभी को धन्यवाद। – Pori

संबंधित मुद्दे