EDIT: the best explanation i could find to handle loop closure in js is Javascript infamous Loop issue?
so with my code it works as:
  a.onclick = function (url) {
            return function () {
                OnSearchResultClick(url);
            }
        }(urlStr);
POST: i am trying to dynamically build a list in js by iterating on a json array received from an ajax request.
scenario 1:
 for (var i = 1; i < results.length; i++) {
        //alert(results[i]['url']);
        var nameStr = results[i]['name'];
        var urlStr = results[i]['url'];
        var a = document.createElement("a");
        a.textContent = nameStr;
        a.id = nameStr;
        a.href = "#";
        a.onclick = function () {OnSearchResultClick(urlStr);};
in firebug i see the onclick event will call exactly that : OnSearchResultClick(urlStr) and so will take the last set value of urlStr, which means all a tags created this way call the function with the same argument.
scenario 2:
a.onclick = function () {OnSearchResultClick(results[i]['url']);}
even stranger, in firebug I get TypeError: results[i] is undefined
scenario 3: tried to pass urlStr.value, it is undefined
so i am wondering how to send not the variable but the string value inside the urlStr variable
I have been checking documentations on javascript passing arguments by value or reference but can't seems to make this work
any help would be appreciated
thanks
 
    