2017-04-01 6 views
6

में सेट नहीं है, मेरे पास निम्न कोड है। मैं यह समझने में सक्षम नहीं हूं कि ईवेंट पर क्लिक क्यों होता है, भले ही मैंने बटन को बटन पर क्लिक करने के लिए फ़ंक्शन सेट न किया हो।फ़ंक्शन "ऑनक्लिक" को कॉल किया जाता है भले ही यह बटन

var x = 0; 
 
var onclick = function() { 
 
    console.log("x = " + ++x); 
 
};
<button type="button" onclick="">Click</button>

+0

मैं बटन दबा सकते हैं लेकिन कुछ भी हो रहा है। – suleiman

+0

@suleiman अपने ब्राउज़र के कंसोल की जांच करें। बरुन var खिड़की के समान ही क्लिक करें। क्लिक करें। – Ali

उत्तर

8

वैसे आप वैश्विक चर onclick है, जो वैश्विक वस्तु window संपत्ति onclick करने के लिए अनुवाद की स्थापना की। यह मूल रूप से एक ही है के रूप में यदि आप इसे सीधे सेट करने के लिए किए गए:

window.onclick = function() { 
    console.log("x = " + ++x); 
}; 

और क्योंकि आप पूरे window वस्तु पर क्लिक करें घटना की स्थापना की है, यह बटन पर क्लिक लेकिन कुछ भी पर क्लिक अपने दस्तावेज़ में पर न केवल सक्रिय कर देगा (जब तक घटना प्रसार बंद नहीं किया जाता है)।

+0

[* event.stopPropragation *] (https://developer.mozilla.org/en/docs/Web/API/Event/stopPropagation) केवल श्रोता के पीछे जा रहा है, यह श्रोता को प्राप्त करने से नहीं रोकता है (चूंकि इसे केवल श्रोता से ही बुलाया जा सकता है, इसे पहले श्रोता को मिलना चाहिए)। तो "* ... जब तक किसी अन्य क्लिक श्रोता द्वारा ईवेंट प्रक्षेपण रोक दिया जाता है *"। ;-) – RobG

+1

भले ही आप इसे 'var'' से परिभाषित करते हैं? यह जानकर अच्छा लगा। मुझे लगता है कि मैं ओपी के रूप में एक ही गलती कर सकता था! –

+0

@Mrlister अच्छी तरह से इस मामले में हम वैश्विक दायरे में हैं, इसलिए 'var' वैश्विक चर सेट करता है। यदि यह कोड फ़ंक्शन के अंदर था, तो यह निश्चित रूप से 'window.onclick' सेट नहीं करेगा। – dfsq

0

जैसा कि @dfsq ने उल्लेख किया है, आप करते समय window.onclick बना रहे हैं। इसी तरह की एक टिप्पणी पर:

var onerror = function() { 
 
    console.log("ERROR HAPPENED!"); 
 
};
<button type="button" onclick="ThisFunctionIsNotDefined()">Click</button>

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