You don't pass arguments to the event handlers because you don't call them -- the browser does. And on real browsers, the Event instance is passed as the parameter to the function (Internet Explorer makes you grab it from window.event).
If you need extra data available in the handler, your best bet is to use a closure to make sure that the data is in scope when the handler executes.
The closure created by the inline function makes the value of index available inside the anonymous function even after the local variable has gone out of scope.
Another tactic would be to assign the index value as an expando, or perhaps a custom attribute, on the newly created element. Then you can retrieve it in the event handler, as the target of the event is available from the Event instance.
You're very welcome. It's essential to understand closures to bring your on-page scripting into the big leagues. Please make sure that you understand why and how all that works. It'll really help with your other, more-advanced scripting.