2011-08-02 16 views
23

पर जोड़ें मुझे नहीं पता कि यह अनुमति है या यहां तक ​​कि संभव है। क्या एक ऑनक्लिक घटना के साथ एक div तत्व बनाना संभव है ताकि यदि div के क्षेत्र में कहीं भी क्लिक किया गया हो, तो ईवेंट चल जाएगा।एक ऑनक्लिक घटना को एक div

जैसे JavaScript:

var divTag = document.createElement("div"); 
divTag.id="new-ID"; 
var onClickCommand = "printWorking()" //printworking is another method that simply print "I'm working" to the console 
divTag.onclick = onClickCommand; 
console.log("onclick command added"); 
console.log(divTag.onclick); 
parentDiv.appendChild(divTag); //This simply adds the div tag to the page. 

एचटीएमएल उत्पन्न:

<!--<div id="new-ID">--> 

whatever content I decide to add to the divTag.innerHTML 

मैं कैसे कोई onclick आदेश उत्पन्न div के माध्यम से जा रहा theres नोटिस। यह आईडी है क्योंकि इसकी अनुमति नहीं है?

तो 2 प्रश्न तब।

1: क्या यह एक div पर क्लिक करना संभव है और यदि यह div के किसी भी क्षेत्र पर क्लिक किया जाता है तो ऐसा होता है। 2: यदि हां, तो मेरे div पर ऑनक्लिक विधि क्यों नहीं चल रही है।


कैसे बहुत अजीब:

divTag.setAttribute("onclick", "printWorking()"); 

ऊपर दोषरहित काम करता है।

नीचे सभी नीचे div पर क्लिक नहीं करते हैं और पास नहीं करेंगे।

divTag.onclick=printWorking; 

divTag.onclick="printWorking"; 

divTag.onclick="printWorking()"; 

कई अन्य प्रकारों की भी कोशिश की गई है।

+0

आईटी दिखाई देगा कि सेटिंग ऑनक्लिक मैन्युअल रूप से इच्छित नहीं है। मुझे इसके बजाय .setAttriubte का उपयोग करने की आवश्यकता है – OVERTONE

+0

@feeela। मैंने खोज की ऐसे कई उदाहरण हैं जो प्रासंगिक प्रतीत नहीं होते हैं या मैंने स्वयं की कोशिश की है और इसका कोई प्रभाव नहीं पड़ा है। जिस कारण से मेरी उपरोक्त टिप्पणी – OVERTONE

+0

के संबंध में प्रतीत होता है यदि आपने 'setAttribute' को एक उत्तर में रखा था तो मैंने इसे ऊपर उठाया होगा। तो उत्तर के साथ प्रश्न के लिए +1। – Pascal

उत्तर

20

क्या यह एक div पर क्लिक करना संभव है और यदि div के किसी भी क्षेत्र पर क्लिक किया जाता है तो ऐसा होता है।

हाँ ... हालांकि इसे सावधानी के साथ किया जाना चाहिए। सुनिश्चित करें कि कुछ तंत्र है जो कीबोर्ड एक्सेस की अनुमति देता है। Build on things that work

यदि हां तो मेरे div पर ऑनक्लिक विधि क्यों नहीं चल रही है।

आप एक स्ट्रिंग असाइन कर रहे हैं जहां एक फ़ंक्शन की अपेक्षा की जाती है।

divTag.onclick = printWorking; 

वहाँ हालांकि ईवेंट हैंडलर्स आवंटित करने के लिए अच्छे तरीके, हालांकि इंटरनेट एक्सप्लोरर के पुराने संस्करणों के लिए पर्याप्त रूप से अलग है कि आप इसे सार करने के लिए एक पुस्तकालय का उपयोग करना चाहिए रहे हैं। very small event libraries के बहुत सारे हैं और प्रत्येक प्रमुख लाइब्रेरी (जैसे YUI या jQuery) में ईवेंट हैंडलिंग कार्यक्षमता है।

+0

क्या ब्रांड्स की आवश्यकता नहीं है? – OVERTONE

+3

यदि ब्रांड्स थे तो यह एक फंक्शन ** कॉल ** होगा और वापसी मूल्य को फ़ंक्शन के बजाए असाइन किया जाएगा। – Quentin

+1

जो अब इतना समझ में आता है। मैंने अपने कोड में कहीं और कई बार ऐसा किया है और मुझे पता नहीं था कि क्या हो रहा था। – OVERTONE

2

इस तरह onclick असाइन करें: जब सौंपा

divTag.onclick = printWorking; 

onclick संपत्ति एक स्ट्रिंग नहीं ले जाएगा। इसके बजाए, यह एक फ़ंक्शन संदर्भ लेता है (इस मामले में, printWorking)।
HTML में असाइन किए जाने पर ऑनक्लिक विशेषता स्ट्रिंग हो सकती है, उदा। <div onclick="func()"></div>, लेकिन आम तौर पर इसकी अनुशंसा नहीं की जाती है।

+4

इसकी अनुशंसा क्यों नहीं की जाती है? –

2

सब कुछ अच्छी तरह से काम करता है। आप divtag का उपयोग नहीं कर सकते हैं।ऑनक्लिक, बीसेज़ "ऑनक्लिक" विशेषता मौजूद नहीं है। आपको पहलेset.ttribute() का उपयोग कर इस विशेषता को बनाने की आवश्यकता है। इस http://reference.sitepoint.com/javascript/Element/setAttribute पर देखें। "-" देने से पहले आपको दस्तावेज़ों को पहले पढ़ना चाहिए।

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