2011-03-27 10 views
5
element.onclick = function() { alert(1); } 

alert(element.onclick); 

उपरोक्त कोड फ़ंक्शन() {अलर्ट (1); }कैसे addEventListener DOM तत्व की ऑनक्लिक संपत्ति को प्रभावित करता है?

तो मैं निम्नलिखित कोड निष्पादित करने के लिए जारी:

element.addEventListener('click', function() { alert(2); }, false); 
alert(element.onclick); 

उत्पादन अभी भी समारोह है() {चेतावनी (1); }

वास्तव में जब अब तत्व पर क्लिक करके, कोड addEventListener ('क्लिक', function() {चेतावनी (2);}, झूठी); काम करता है, यह नया समारोह चेतावनी (2)onclick इस तत्व की संपत्ति में लिखा है मतलब है। लेकिन आउटपुट अभी भी अपरिवर्तित क्यों है?

तो, जब addEventListener, कैसे onclick संपत्ति बदल क्रियान्वित क्या मैं जानना चाहता हूँ है?

आपके उत्तर के लिए तत्पर हैं।

+0

मैंने इसके लिए एक पहेली बना दी: http://jsfiddle.net/billymoon/9sNqq/ –

+0

इसके अलावा - जब दोनों हैंडलर क्लिक किए जाते हैं, तो वे _both_ चलाते हैं, न केवल दूसरे, इसलिए ईवेंट श्रोता पिछले को हटा नहीं देता है। ऐसा लगता है कि element.onclick केवल पहले क्लिक ईवेंट फ़ंक्शन को लौट रहा है। –

+0

इससे आपकी मदद मिलेगी: https://developer.mozilla.org/en/DOM/element.addEventListener#Notes – jasssonpet

उत्तर

7

ऑनक्लिक एक डोम स्तर 0 संपत्ति है। AddEventListener डोम लेवल 2 परिभाषा का हिस्सा है। AddEventListener विधि के माध्यम से इवेंट हैंडलर जोड़ना तत्व पर ऑनक्लिक प्रॉपर्टी को नहीं बदलता है, बल्कि यह श्रोता को तत्व श्रोताओं के संग्रह में तत्व में जोड़ता है। आप http://www.w3.org/TR/DOM-Level-2-Events/events.html पर डीओएम स्तर 2 घटनाओं के बारे में अधिक जानकारी प्राप्त कर सकते हैं। http://en.wikipedia.org/wiki/DOM_events पर भी एक अच्छा लेख है।

2

"ऑनफू" विशेषताएँ ईवेंट हैंडलर प्रबंधन प्रणाली से स्वतंत्र हैं जो "addEventListener()" के माध्यम से उपयोग की जाती है। एक या दूसरे का उपयोग करना सबसे अच्छा है, दोनों नहीं, और सही विकल्प अधिक लचीला और अनियंत्रित "addEventListener()" (जहां उपलब्ध है) है।

+0

[इस आलेख] के अनुसार (http://www.quirksmode.org/js/events_order.html), "ऑनफू" गुण बुलबुले चरण में पंजीकरण के रूप में देखा जाता है। – zanetu

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