javascript - addEventListener not modifying href on click -


i trying change href attributes of specific classes onclick. however, original href never changes.

<a class="vendor" href="https://jsfiddle.net">jsfiddle.net</a> 
window.addeventlistener("load", fixlinks);  function fixlinks() {   var link_class = document.getelementsbyclassname("vendor")   (var = 0; < link_class.length; i++) {     link_class[i].addeventlistener("click", makelinks(link_class[i]));   } }  function makelinks(expr) {   //rickroll 'em   expr.setattribute("href", "https://www.youtube.com/embed/dqw4w9wgxcq"); } 

//jsfiddle.net/qm9bnvon/5/

the solution not invoke function pass instead, , use this reference bound element in handler.

updated demo: http://jsfiddle.net/qm9bnvon/11/

window.addeventlistener("load",fixlinks);  function fixlinks() {     var link_class = document.getelementsbyclassname("vendor")     for(var = 0; < link_class.length; i++) { // v----pass it, don't invoke         link_class[i].addeventlistener("click", makelinks);     } }  function makelinks(event) { //   v---`this` refers bound element     this.setattribute("href","https://www.youtube.com/embed/dqw4w9wgxcq"); } 

Comments