I have some code where a <script type="text/javascript"> block is dynamically inserted.
This block contains a function, which has an <input type="button"> element above it (also dynamically inserted) call it with the onclick attribute.
However, it is not working, and Firebug says that the function is not defined when I attempt to click the button.
Is this expectable, and if so is there a workaround?
If you’re writing it to an innerHTML property, it won’t work except for in IE when the DEFER attribute is present:
Your options are, a) use the DOM to create the element and append it:
or b) use document.write at the time your HTML is parsed (but not after!)
EDIT
Seeing as I was downvoted apparently for the information regarding the defer attribute being incorrect, I feel it necessary to post a working example from the MSDN documentation. Whilst it is true that IE removes NoScope elements from the beginning of an innerHTML string, it’s possible to work around this by adding a scoped element to the beginning of the HTML string (example updated above):
Feel free to actually click the “Show me” button in the MSDN documentation for a working example. [link]