+ 3
removeEventHandler not working!!!!!
Basically, trying to remove the click event from this program and it just doesnt work. Tried to look up online articles about it but none talk about removing multiple click events in a for loop. Can someone please help? How the program works: You hit twice on the board then the program removes the click event. I've tried to put this in but the function just seens to not want to run properly so the click event never gets removed.... https://code.sololearn.com/W7VDb2fWdNvp/?ref=app
15 Réponses
+ 3
Heres my attempt Jay . Look in the test function and I changed the removeEvents call to the remove event listener and I removed the bind call that Aaron made. It's not yet working properly, but I think you can solve it. It's at least removing the listeners now
https://code.sololearn.com/WEZLfzvWQrz8/?ref=app
+ 3
Oh yeah, it can definitely get frustrating. I always have to think on problems like these: "someone MUST have had this idea at least once before." It motivates me to make the right Google search
+ 2
I think if you remove a event listener JS wants you to use exactly the same function as the one you used when adding the event listener. Therefore you can't declare a function inside addEventListener() if you want to remove the event later. Instead you need to declare the function first and then use it in addEventListener() later so JS can make sure it's actually the same function when you call removerEventListener().
I hope that made sense. I'm not completely sure if that's correct but I had a similar problem few days ago and I think that's been the solution.
Here's how it would look like in your code:
https://code.sololearn.com/WkRERnSsncOe/?ref=app
+ 2
Well, now my code works in terms of event listeners. However you need to find a workaround for passing arguments to the event listener, maybe by using event.target or event.currentTarget. It turns out the binding arguments by using func.bind() in addEventListener as I tried doesn't work.
+ 2
Yep Aaron Eberhardt using the event target is what I did. I think thats the way you should go
+ 2
Thing is is that I read MDN, SL and Stack but sometimes its just so frustrating 😥😥😥
+ 1
Maybe you have to use the named function, instead of putting the named function inside of a lambda function? That's my best guess at the moment. I'll keep looking at it though
+ 1
Thanks just tried it. Its still going after i clicked on it twice. So its not removing the event
+ 1
I call any unnamed function a lambda, which might be incorrect Jay , but Aaron Eberhardt is actually talking about the same idea.
+ 1
Thanks very much Aaron Eberhardt and Zeke Williams. Is there a way to learn Javascript efficiently? I feel like I know a lot... and then a I get hit with a new problem 😂
+ 1
No problem! Honestly, there comes a point in every language I'm learning where I can't learn anything else until I start reading the actual language documentation 😂
+ 1
Jay I guess I've learned it on SL and the rest from MDN and stackoverflow
0
Aaron Eberhardt it said that i is not defined
0
Zeke Williams lambdas are used in js? Im not sure what you mean