the most I can think of is to evaluate the value right at the function declaration:
objA.onclick = eval ('function(){ alert( ' + intI + ' ); };'); On 4/20/06, Ben Nadel <[EMAIL PROTECTED]> wrote: > > Not really for CF, but though someone here could lend some insight.... > > There is one problem in Javascript that I cannot seem to get a handle on > and > it is killling me! I can't seem to get variables to pass by value as I > would > hope. Take the following example: > > for (var intI = 0 ; intI < 10 ; intI++){ > var objA = document.createElement( "div" ); > > // Set the click for the link. > objA.onclick = function(){ alert( intI ); }; > > // Set the link into the body div. > objDiv.appendChild( objA ); > } > > Now, in my head, each one of those links, when clicked should alert the > appropriate intI value (0, 1, 2, 3, etc.); however, each of them will > alert > 10 which is the value that broke the FOR loop. It's like they all point to > one variable and then get updated for each loop of the FOR iteration. > > I can't seem to find a good solution to this. One method that seems to > work, > but is poop is something along the lines of: > > // Define a function INSIDE this function. > function GetI( intX ){ > return( > function(){ alert(intX); }; > ); > } > > for (var intI = 0 ; intI < 10 ; intI++){ > var objA = document.createElement( "div" ); > > // Set the click for the link. > objA.onclick = GetI( intX ); > > // Set the link into the body div. > objDiv.appendChild( objA ); > } > > This method works as would be expected, though I seem to think that it is > doing the exact same thing. It must be something to do with the scoping. > Since the intI value is getting passed to a local scope (int GetI()), and > then getting passed back, it must be unique (since the local scope of the > GetI() method is created unique of each FOR iteration. > > This solution seems truly ganky to me. There has to be a better way. And > this is just a simple example. I have many places where I want to be doing > this with object reference and dynamic event handling. This one simple > bumb > is really holding me back! > > Please help!!! > ....................... > Ben Nadel > www.bennadel.com > > > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~| Message: http://www.houseoffusion.com/lists.cfm/link=i:4:238286 Archives: http://www.houseoffusion.com/cf_lists/threads.cfm/4 Subscription: http://www.houseoffusion.com/lists.cfm/link=s:4 Unsubscribe: http://www.houseoffusion.com/cf_lists/unsubscribe.cfm?user=89.70.4 Donations & Support: http://www.houseoffusion.com/tiny.cfm/54