जावास्क्रिप्ट में अनाम फंक्शनों को अनबाइंड करना
अब मान लीजिए कि हमारे पैराग्राफ से एक अनाम फंक्शन बंधी हुई है:
let elems = document.querySelectorAll('p');
for (let elem of elems) {
elem.addEventListener('click', function() {
console.log(this.textContent);
});
}
मान लीजिए कि हम इस पैराग्राफ पर क्लिक करने के बाद इस फंक्शन को पैराग्राफ से अनबाइंड करना चाहते हैं। हालांकि, हमें एक समस्या का सामना करना पड़ेगा: फंक्शन का कोई नाम नहीं है, जिसका अर्थ है कि हम इस नाम से इसे अनबाइंड करने के लिए इससे संपर्क नहीं कर पाएंगे।
समस्या के समाधान के लिए फंक्शन को एक नाम देना होगा, इसे नामित फंक्शनल एक्सप्रेशन में बदलकर। आइए इसे करें:
let elems = document.querySelectorAll('p');
for (let elem of elems) {
elem.addEventListener('click', function func() { // फंक्शन को नाम दिया
console.log(this.textContent);
});
}
अब इस फंक्शन को इसके अंदर ही अनबाइंड किया जा सकता है:
let elems = document.querySelectorAll('p');
for (let elem of elems) {
elem.addEventListener('click', function func() {
console.log(this.textContent);
this.removeEventListener('click', func); // फंक्शन को अनबाइंड कर रहे हैं
});
}
एक सूची ul दी गई है, जिसके प्रत्येक आइटम में
एक नंबर लिखा है। ऐसा करें कि
किसी भी li पर क्लिक करने पर
उसका नंबर एक बढ़ जाए।
पिछले कार्य को इस तरह संशोधित करें,
कि प्रत्येक li अपना
मान केवल पहली बार दबाने पर
बढ़ाए।
पिछले कार्य को इस तरह संशोधित करें,
कि प्रत्येक li अपना
मान केवल तभी बढ़ाए जब उसका मान
10 से कम हो।