मुझे पता है कि यह बुरा अभ्यास है। यदि संभव हो तो इस तरह कोड न लिखें।
बेशक, हम हमेशा खुद को उन स्थितियों में पाएंगे जहां इनलाइन जावास्क्रिप्ट का एक चतुर स्निपेट एक मुद्दे को जल्दी से संबोधित कर सकता है।
जब कुछ ऐसा लिखा जाता है (और संभावित नुकसान) पूरी तरह से समझने के हित में मैं इस प्रश्न का अनुसरण कर रहा हूं:
<a href="#" onclick="alert('Hi')">Click Me</a>
जहां तक मैं बता सकता हूं यह कार्यात्मक रूप से उसी के समान है
<script type="text/javascript">
$(function(){ // I use jQuery in this example
document.getElementById('click_me').onclick =
function () { alert('Hi'); };
});
</script>
<a href="#" id="click_me">Click Me</a>
इससे यह पता चलता है कि विशेषता onclickको सौंपे गए स्ट्रिंग को एक अनाम फ़ंक्शन के भीतर डाला गया है जो तत्व के क्लिक हैंडलर को सौंपा गया है। क्या वास्तव में ऐसा है?
क्योंकि मैं इस तरह की चीजें करना शुरू कर रहा हूं:
<a href="#" onclick="$(this).next().fadeIn(); return false;">Display my next sibling</a> <!-- Return false in handler so as not to scroll to top of page! -->
जो काम करता है। लेकिन मुझे नहीं पता कि यह कितना हैक है। यह संदेहास्पद लग रहा है क्योंकि कोई भी स्पष्ट कार्य नहीं है जिसे वापस किया जा रहा है!
आप पूछ सकते हैं, आप ऐसा क्यों कर रहे हैं, स्टीव? इनलाइन JS ख़राब है!
अच्छी तरह से ईमानदार होने के लिए मैं कोड के तीन अलग-अलग अनुभागों को संपादित करने के लिए थक गया हूं, केवल एक पृष्ठ के एक अनुभाग को संशोधित करने के लिए, खासकर जब मैं सिर्फ यह देखने के लिए कुछ प्रोटोटाइप कर रहा हूं कि क्या यह बिल्कुल काम करेगा। यह इतना आसान है और कभी-कभी विशेष रूप से इस HTML तत्व से संबंधित कोड को तत्व के भीतर परिभाषित करने के लिए भी समझ में आता है : जब मैं 2 मिनट बाद फैसला करता हूं कि यह एक भयानक, भयानक विचार था जो मैं पूरे div (या जो कुछ भी कर सकता हूं) ) और मेरे पास रहस्यमय जेएस और सीएसएस cruft का एक गुच्छा नहीं है, जो बाकी पेज पर घूम रहा है, जो कभी-कभी थोड़ा धीमा होता है। यह संदर्भ की स्थानीयता की अवधारणा के समान है, लेकिन कैश मिस के बजाय हम बग और कोड ब्लोट देख रहे हैं।
#click_meईवेंट के लिए क्वेरी को हुक करने की आवश्यकता होगी , या स्क्रिप्ट को नोड के बाद रखें।
document.getElementById("click_me").onclick;। या इसे सचेत करें। आप देखेंगे कि यह एक फंक्शन में है।