javascript - addEventListener click executed before clicked -
i want pass on parameters in click function.
var albums = document.getelementsbyclassname("album"); for(var = 0; i<albums.length; i++){ document.getelementbyid(albums[i].id).addeventlistener("click", goalbum(albums[i].id), false); }
however, function "goalbum" gets excecuted when created, , function won't excecute anymore. doing wrong?
goalbum
getting executed because called function. weren't "creating" function. intended supply addeventlistener
logic execute when clicked; logic being "invoke goalbum
". this, wrap function call in anonymous function.
function toarray(list) { return array.prototype.slice.call(list); } var albums = toarray(document.getelementsbyclassname("album")); albums.foreach(function (album) { document.getelementbyid(album.id).addeventlistener("click", function () { goalbum(album.id); }, false); });
additionally, because it unwise create functions in for
loop, have refactored code use foreach
. need convert nodelist
returned document.getelementsbyclassname
array
in order use foreach
, hence toarray
function.
Comments
Post a Comment