⊗jsPmOENEH 430 of 505 menu

JavaScript တွင် element အသစ်များပေါ်သို့ event handler များတပ်ဆင်ခြင်း

ကျွန်ုပ်တို့ဆီတွင် list ul နှင့် button တစ်ခုရှိသည်ဆိုကြပါစို့။

<ul> <li>item</li> <li>item</li> <li>item</li> <li>item</li> <li>item</li> </ul> <button>add</button>

ကျွန်ုပ်တို့၏ element များကို သက်ဆိုင်ရာ variable များထဲသို့ ရယူကြမည်။

let button = document.querySelector('button'); let list = document.querySelector('ul'); let items = list.querySelectorAll('li');

မည်သည့် li ပေါ်တွင်မဆို click နှိပ်လိုက်သည့်အခါ ၎င်း၏အဆုံးတွင် အာမေဍိတ်အမှတ်အသား ပေါင်းထည့်ပေးမည့် ပုံစံပြုလုပ်ကြပါစို့။

for (let item of items) { item.addEventListener('click', function() { this.textContent = this.textContent + '!'; }); }

ယခု button ကိုနှိပ်လိုက်သည့်အခါ list ၏အဆုံးတွင် li အသစ်တစ်ခု ပေါင်းထည့်ပေးမည့် ပုံစံပြုလုပ်ကြပါစို့။

button.addEventListener('click', function() { let item = document.createElement('li'); item.textContent = 'item'; list.appendChild(item); });

သို့သော် ကျွန်ုပ်တို့သည် ပြဿနာတစ်ခုနှင့် ကြုံရလိမ့်မည်။ ပေါင်းထည့်လိုက်သော li အသစ်ပေါ်တွင် click နှိပ်လိုက်ခြင်းသည် အဆုံးတွင် အာမေဍိတ်အမှတ်အသား ပေါင်းထည့်ခြင်းကို ဖြစ်ပေါ်စေမည် မဟုတ်ပါ။ အကြောင်းမှာ ကျွန်ုပ်တို့သည် click event handler ကို ကနဦးကတည်းကရှိပြီးသော li များပေါ်တွင်သာ တပ်ဆင်ထားပြီး အသစ်များပေါ်တွင် မတပ်ဆင်ထားသောကြောင့် ဖြစ်သည်။

li အသစ်ပေါ်သို့ click event handler တပ်ဆင်ပေးခြင်းဖြင့် ပြဿနာကို ပြင်ဆင်ကြပါမည်။

button.addEventListener('click', function() { let item = document.createElement('li'); item.textContent = 'item'; item.addEventListener('click', function() { // click event handler this.textContent = this.textContent + '!'; }); list.appendChild(item); });

သို့သော် ယခုအခါ function handler ၏ code သည် နေရာနှစ်ခုတွင် ထပ်နေသည် - ကနဦးကတည်းကရှိပြီးသော li များအတွက်နှင့် အသစ်များအတွက်။ ၎င်းကို function သီးသန့်တစ်ခုထုတ်၍ ပြင်ဆင်ကြမည်။

function handler() { this.textContent = this.textContent + '!'; }

ကုဒ်ထပ်နေခြင်းကို ရှောင်ရှားရန် ကျွန်ုပ်တို့၏ function ကို အသုံးပြုကြမည်။

for (let item of items) { item.addEventListener('click', handler); } button.addEventListener('click', function() { let item = document.createElement('li'); item.textContent = 'item'; item.addEventListener('click', handler); list.appendChild(item); });

ပြဿနာကို ယျေဘုယျအားဖြင့် ဖြေရှင်းပြီးဖြစ်ကာ function handler ၏ကုဒ် ထပ်နေခြင်းကိုလည်း ရှောင်ရှားပြီးဖြစ်သည်။ သို့သော် event handler များကို တပ်ဆင်ရခြင်းသည် နေရာနှစ်ခုတွင် ဆက်လက်ဖြစ်ပေါ်နေဆဲဖြစ်သည်။ ရှိပြီးသော li များအတွက် loop ထဲတွင်လည်းကောင်း၊ button ကိုနှိပ်သည့်အခါတွင်လည်းကောင်း။ နောက်လာမည့်သင်ခန်းစာတွင် ဤအဆင်မပြေမှုမှ လွတ်မြောက်ရန် နည်းလမ်းတစ်ခုကို ဖြေရှင်းကြမည်။

မြန်မာ
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
ဝက်ဘ်ဆိုက် လုပ်ဆောင်ခြင်း၊ ဆန်းစစ်လေ့လာခြင်းနှင့် ပုဂ္ဂလိကပြုပြင်ခြင်းအတွက် ကျွန်ုပ်တို့သည် cookie များကို အသုံးပြုပါသည်။ ဒေတာများကို ပြုပြင်ခြင်းသည် ကိုယ်ရေးကိုယ်တာ မူဝါဒအတိုင်း ဖြစ်ပါသည်။
အားလုံးလက်ခံရန် ပြင်ဆင်ရန် ငြင်းပယ်ရန်