Αποδέσμευση Ανώνυμων Συναρτήσεων στην JavaScript
Ας υποθέσουμε ότι τώρα στις παραγράφους μας είναι συνδεδεμένη μια ανώνυμη συνάρτηση:
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.