আমি জানি এটি খারাপ অভ্যাস। যদি সম্ভব হয় তবে এই জাতীয় কোডটি লিখবেন না।
অবশ্যই, আমরা সর্বদা নিজেকে এমন পরিস্থিতিতে খুঁজে পাব যেখানে ইনলাইন জাভাস্ক্রিপ্টের একটি চৌকস স্নিপেট কোনও সমস্যা দ্রুত সমাধান করতে পারে।
আমি যখন এই জাতীয় কিছু লেখা হয় তখন কী ঘটে (এবং সম্ভাব্য সমস্যাগুলি) পুরোপুরি বোঝার স্বার্থে এই প্রশ্নটি অনুসরণ করছি:
<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একটি বেনামি ফাংশনের মধ্যে isোকানো হয়েছে যা উপাদানটির ক্লিক হ্যান্ডলারের জন্য বরাদ্দ করা হয়েছে। আসলে কি এই ঘটনা?
কারণ আমি এই জাতীয় জিনিসগুলি শুরু করছি:
<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! -->
যা কাজ করে। তবে আমি জানি না এটি কতটা হ্যাক। এটি সন্দেহজনক বলে মনে হচ্ছে কারণ এমন কোনও দৃশ্যমান ফাংশন নেই যা থেকে ফিরে আসছে!
আপনি জিজ্ঞাসা করতে পারেন, স্টিভ কেন আপনি এটি করছেন? ইনলাইন জেএস খারাপ অভ্যাস!
বেশ সত্যই বলতে গেলে আমি কেবলমাত্র একটি পৃষ্ঠার একটি বিভাগ পরিবর্তন করতে কোডের তিনটি পৃথক বিভাগ সম্পাদনা করে ক্লান্ত হয়ে পড়েছি, বিশেষত যখন আমি কোনও কিছু প্রোটোটাইপ করছি যা এটি আদৌ কার্যকর হবে কিনা তা দেখার জন্য। এটি এত সহজ এবং কখনও কখনও এমনকি এইচটিএমএল উপাদানটির সাথে সম্পর্কিত কোডটিও মূল উপাদানটির মধ্যেই সংজ্ঞায়িত করা যায়: আমি যখন 2 মিনিট পরে সিদ্ধান্ত নিই যে এটি একটি ভয়ানক, ভয়ানক ধারণা ছিল আমি পুরো ডিভকে নাক করে দিতে পারি (বা যাই হোক না কেন ) এবং আমার কাছে রহস্যময় জেএস এবং সিএসএস ক্রাফ্টের বাক্সটি বাকি পৃষ্ঠায় ঝুলছে না, এতটা সামান্য রেন্ডারিংকে কমিয়ে দিচ্ছে। এটি রেফারেন্সের স্থানীয়তার ধারণার অনুরূপ তবে ক্যাশে মিস করার পরিবর্তে আমরা বাগ এবং কোড ব্লাট খুঁজছি।
#click_meআপনার ডমড্রিড ইভেন্টে কোয়েরিটি হুক করতে হবে , বা নোডের পরে স্ক্রিপ্টটি রাখতে হবে।
document.getElementById("click_me").onclick;। বা এটি সতর্কতা। আপনি দেখতে পাবেন যে এটি কোনও ফাংশনে রয়েছে।