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"); }
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
Post a Comment