Hi all, New member here. I've been working with Prototype for a while, and I love it. However, there's one thing I still can't figure out.
Let's say I have an array of objects, representing contacts in an address book: var contacts = [ { id: 1, firstName: "Bob", lastName: "Smith" }, { id: 2, firstName: "Sue", lastName: "Johnson" }, { id: 3, firstName: "Tim", lastName: "Horton" } ]; I'd like to iterate over this array, create an <li> for each contact, and—here's the tricky part—attach an onclick observer to each <li>, which calls the openContact() function and passes in the ID of the contact that was clicked. I understand closures. However, I haven't found an elegant way to solve the problem. This won't work: function populateContactsList( contacts ) var theUL = document.getElementById("addr-book-index"); var thisLI = null; for ( var i = 0; i < contacts.length; i++ ) { thisLI = document.createElement("li"); thisLI.appendChild( document.createTextNode( contacts[i].name ) ); theUL.appendChild( thisLI ); Event.observe( thisLI, "click", function() { openContact( contacts[i].id ); } ); } } ...because every call to openContact() will receive 3 as the parameter - the value of contacts[i].id at the time the outer function exits. I've been kludging my way around the problem by storing data in the element's id attribute (e.g., <li id="contacts-index-3">Tim Horton</ li>), but I'm not entirely happy with this solution. Suggestions? For bonus points: I like to use innerHTML to insert new content into the DOM. Yes, it's non-standard, but it's widely supported, and it's much faster than the DOM methods - see http://quirksmode.org/dom/innerhtml.html. If you can suggest a clean technique that allows me to keep using innerHTML *and* attach onclick handlers in the way I've described, I'll write a song extolling your greatness. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Spinoffs" group. To post to this group, send email to rubyonrails-spinoffs@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/rubyonrails-spinoffs?hl=en -~----------~----~----~----~------~----~------~--~---