2010-07-23 6 views
31

में नए जोड़े गए तत्व पर ऑनक्लिक ईवेंट जोड़ें मैं जावास्क्रिप्ट के साथ जोड़े गए नए तत्वों पर ऑनक्लिक ईवेंट जोड़ने की कोशिश कर रहा हूं।जावास्क्रिप्ट

समस्या तब होती है जब मैं document.body.innerHTML देखता हूं, मैं वास्तव में ऑनक्लिक = अलर्ट ('blah') को नए तत्व में जोड़ सकता हूं।

लेकिन जब मैं उस तत्व पर क्लिक करता हूं तो मुझे नहीं लगता कि अलर्ट बॉक्स काम कर रहा है। वास्तव में जावास्क्रिप्ट से संबंधित कुछ भी काम नहीं कर रहा है ..

यहाँ मैं क्या नया तत्व जोड़ने के लिए उपयोग करते हैं:

<button onclick=add_img()>add image</button> 

अब छवि:

function add_img() { 
    var elemm = document.createElement('rvml:image'); 
    elemm.src = 'blah.png'; 
    elemm.className = 'rvml'; 
    elemm.onclick = "alert('blah')"; 
    document.body.appendChild(elemm); 
    elemm.id = "gogo"; 
    elemm.style.position='absolute'; 
    elemm.style.width=55; 
    elemm.style.height=55; 
    elemm.style.top=200; 
    elemm.style.left=300; 
    elemm.style.rotation=200; 
} 

यहाँ कैसे मैं इस समारोह फोन है ब्राउज़र के अंदर पूरी तरह से खींचता है। लेकिन जब मैं छवि पर क्लिक करता हूं तो मुझे वह चेतावनी नहीं मिलती है।

+0

ओह jQuery की सुंदरता। शायद यह भविष्य में सहायक होगा :) $ ('। Rvml')। लाइव ('क्लिक करें', फ़ंक्शन() {अलर्ट (1);}); –

उत्तर

87

.onclick स्ट्रिंग के बजाए फ़ंक्शन पर सेट होना चाहिए।

elemm.onclick = function() { alert('blah'); }; 

इसके बजाय प्रयास करें।

+0

सही धन्यवाद :) – SolidSnake

+0

क्या यह IE8 के लिए काम करता है? – human

+0

@ हुमान मुझे यकीन है कि यह आईई 4 पर वापस सभी तरह से काम करता है। – kennytm

11

यकीन है, लेकिन कोशिश नहीं:

elemm.addEventListener('click', function(){ alert('blah');}, false); 
+0

'.addEventListener' के साथ भी दूसरा तर्क अभी भी एक स्ट्रिंग नहीं है जो एक स्ट्रिंग नहीं है। – kennytm

+0

jQuery का उपयोग करके मुझे यह याद नहीं आया;) धन्यवाद –

+0

यह IE8 में काम नहीं करेगा: http://caniuse.com/#search=addEventListener –

1

आप स्ट्रिंग द्वारा एक घटना नहीं सौंप सकते। इसका उपयोग करें:

elemm.onclick = function() {चेतावनी ('blah'); };

1

लघु जवाब: यदि आप एक समारोह के लिए हैंडलर सेट करना चाहते हैं:

elemm.onclick = function() { alert('blah'); }; 

थोड़ा लंबा उत्तर: आपको लगता है कि ब्राउज़रों में लगातार काम करने के लिए प्राप्त करने के लिए कोड की कुछ अधिक लाइनों लिखने के लिए होगा।

तथ्य यह है कि यहां तक ​​कि स्लीथथ-लम्बा-कोड जो सामान्य ब्राउज़र के एक सेट में उस विशेष समस्या को हल कर सकता है, अभी भी अपनी समस्याओं के साथ आ जाएगा। इसलिए यदि आपको क्रॉस-ब्राउज़र समर्थन की परवाह नहीं है, तो पूरी तरह से संक्षिप्त के साथ जाएं। यदि आप इसकी परवाह करते हैं और पूरी तरह से केवल एक ही चीज़ काम करना चाहते हैं, तो addEventListener और attachEvent के संयोजन के साथ जाएं। यदि आप वस्तुओं को व्यापक रूप से बनाने में सक्षम होना चाहते हैं और अपने कोड में ईवेंट श्रोताओं को जोड़ना और निकालना चाहते हैं, और चाहते हैं कि ब्राउज़र में काम करना है, तो आप निश्चित रूप से उस जिम्मेदारी को jQuery जैसी लाइब्रेरी में प्रतिनिधि करना चाहते हैं।

+1

मुझे केवल इंटरनेट एक्सप्लोरर के लिए इसकी आवश्यकता है .. छोटा आकर्षण की तरह काम करता है। विस्तृत समाधान के लिए धन्यवाद हालांकि – SolidSnake

1

मुझे नहीं लगता कि आप इस तरह से ऐसा कर सकते हैं। आप का उपयोग करना चाहिए:

void addEventListener( 
    in DOMString type, 
    in EventListener listener, 
    in boolean useCapture 
); 

प्रलेखन right here

0

आपके पास तीन अलग-अलग समस्याएं हैं। सबसे पहले, एचटीएमएल टैग में मूल्य उद्धृत किया जाना चाहिए! ऐसा नहीं करने से ब्राउज़र को भ्रमित कर सकते हैं, और कुछ परेशानी हो सकती है (हालांकि यह संभवतः यहां मामला नहीं है)। दूसरा, आपको वास्तव में ऑनक्लिक चर पर एक फ़ंक्शन असाइन करना चाहिए, जैसा कि किसी और ने किया है। न केवल आगे बढ़ने का यह सही तरीका है, लेकिन यदि आप ऑनक्लिक फ़ंक्शन में स्थानीय चर का उपयोग करने का प्रयास कर रहे हैं तो यह चीजों को अधिक सरल बनाता है। अंत में, आप addEventListener या jQuery को आजमा सकते हैं, jQuery को एक अच्छे इंटरफ़ेस का लाभ है।

ओह, और सुनिश्चित करें कि आपका HTML मान्य है! यह एक मुद्दा हो सकता है।

+0

मैं इसे स्थानीय रूप से उपयोग कर रहा हूं। तो यह मेरे लिए एक समस्या नहीं होगी .. jQuery के बारे में मुझे पसंद नहीं आया क्योंकि मैं सबकुछ पर नियंत्रण नहीं ले सकता और यह बहुत सारे कोड के साथ गन्दा है और यह अन्य जावास्क्रिप्ट पुस्तकालयों के साथ प्रभाव डालता है। मैं jQuery का उपयोग करने के तरीके को समझने के लिए अपना समय बर्बाद करने के बजाय अपनी खुद की लाइब्रेरी बनाना पसंद करूंगा। आपकी मदद के लिए धन्यवाद :) – SolidSnake

-1

यदि आप उस कोड में लिखे गए सभी कोड को लिखना नहीं चाहते हैं जिसे आपने एक बार लिखा था। कृपया jQuery का उपयोग करके निम्नलिखित कोड का उपयोग करें:

$ (तत्व) .on ('क्लिक करें', फ़ंक्शन() {add_img();});

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