JavaScript-এ Event অবজেক্টে ইভেন্ট এলিমেন্ট

Event অবজেক্টটি ইভেন্টটি যে এলিমেন্টে ঘটেছে তাও পেতে দেয়। এই এলিমেন্টটি target প্রপার্টিতে রয়েছে। এটি কেন প্রয়োজন, যদি এই এলিমেন্টটি this-এ থাকে?

ব্যাপারটি হল যে this সর্বদা সেই এলিমেন্টটি ধারণ করে যার সাথে ইভেন্টটি বাইন্ড করা ছিল, কিন্তু target প্রপার্টি - সেই এলিমেন্টটি যেখানে আসলে ক্লিক করা হয়েছে। এই আসল এলিমেন্টটি this-এর সাথে মিলতে পারে, বা নাও মিলতে পারে।

এর একটি উদাহরণ দেখা যাক। ধরা যাক আমাদের কাছে একটি div আছে, এবং তার ভিতরে একটি প্যারাগ্রাফ:

html<div id="elem">
  <p>text</p>
</div>

আমরা div-এর সাথে একটি ইভেন্ট বাইন্ড করব, কিন্তু প্যারাগ্রাফে ক্লিক করব। এটা স্পষ্ট যে প্যারাগ্রাফে ক্লিক করা একই সাথে div-এ ক্লিক করার সমান, কারণ প্যারাগ্রাফটি আমাদের div-এর ভিতরে রয়েছে।

বর্ণিত ক্ষেত্রে দেখা যাবে যে target প্রপার্টিটি সেই চূড়ান্ত ট্যাগটি ধারণ করবে, যেখানে ইভেন্টটি ঘটেছে - অর্থাৎ প্যারাগ্রাফ, এবং div নয়। এটা নিশ্চিত হওয়া যাক:

javascriptlet elem = document.querySelector('#elem');

elem.addEventListener('click', function(event) {
  console.log(event.target); // আমাদের প্যারাগ্রাফ প্রিন্ট করবে
  console.log(this);         // আমাদের div প্রিন্ট করবে
});
Задание 1

ধরা যাক আপনার কাছে ul তালিকা আছে li ট্যাগ সহ:

cssul {
  padding: 30px;
  border: 1px solid red;
}
li {
  list-style-type: none;
  margin-bottom: 20px;
  border: 1px dashed black;
}
html<ul id="elem">
  <li>text</li>
  <li>text</li>
  <li>text</li>
  <li>text</li>
  <li>text</li>
</ul>

Результат:

ul ট্যাগে একটি ক্লিক হ্যান্ডলার বাইন্ড করুন। এই হ্যান্ডলারে tagName প্রপার্টি ব্যবহার করে পরীক্ষা করুন যে কোন ট্যাগে ক্লিক করা হয়েছে। যদি li ট্যাগে ক্লিক করা হয় - এই ট্যাগের টেক্সটের শেষে একটি বিস্ময়বোধক চিহ্ন যোগ করুন। আর যদি ক্লিক ul ট্যাগে করা হয় - এ সম্পর্কে তথ্য কনসোলে প্রিন্ট করুন।