Agregar evento al button con javascript

En esta página hay una forma de agregar dinámicamente html (textbox, button de input y elementos de radio con javascript)

mi pregunta es cómo puedo agregar un evento al button, imagino que solo quiero crear el button, no el textbox o el elemento de radio.

ACTUALIZAR
Estoy teniendo problemas aquí … He intentado algunas de las soluciones proporcionadas pero me causa problemas, déjame intentar explicar …

Estoy tratando de abrir un file xml, leerlo y crear un object html con las properties del xml, hasta ahora todo bien, pero si trato de agregar el evento, xmlObj cames null any ideias ??

tengo esto…

script = "function OnClientDragEnd(dock, args)" + " {" + "var hidd = document.getElementById('" + HiddenField1.Value + "');" + "hidd.value = dock.get_id();" + //"alert(hidd.value);" + "var xmlDoc = new ActiveXObject('Microsoft.XMLDOM');" + "xmlDoc.async = 'false';" + "xmlDoc.load('Config.xml');" + "xmlObj = xmlDoc.documentElement;" + "if (xmlObj.childNodes.length>0)" + "{" + " for (var i = 0; i < xmlObj.childNodes.length; i++)" + " {" + " if (xmlObj.childNodes(i).getElementsByTagName('Id')[0].text == hidd.value){" + " var txtTb2 = document.getElementById('" + TextBox4.ClientID + "');" + " txtTb2.value = xmlObj.childNodes(i).getElementsByTagName('Titulo')[0].text;" + " y = xmlObj.childNodes(i).getElementsByTagName('Titulo')[0].nextSibling;" + " yy = xmlObj.childNodes(i).getElementsByTagName('Titulo')[0].previousSibling;" + //" alert(y.nodeName);" + " for(i=0;i<yy.text;i++){" + " alert('aa');" + " var tbox = document.createElement('input');" + " tbox.setAttribute('type', 'text');" + " tbox.setAttribute('value', y.text);" + " tbox.setAttribute('name', 'name');" + " var abcd = document.getElementById('spanObjDock');" + " abcd.appendChild(tbox);" + " var bt1 = document.createElement('input');" + " bt1.setAttribute('name', 'mais');" + " bt1.setAttribute('value', '+');" + " bt1.setAttribute('type', 'button');" + " bt1.onclick = function (){alert('Clicked!');};" + //--> this dont work //" bt1.setAttribute('Click','addRadioButton()');" + //--> and this dont work " abcd.appendChild(bt1);" + " var bt2 = document.createElement('input');" + " bt2.setAttribute('name', 'less');" + " bt2.setAttribute('value', '-');" + " bt2.setAttribute('type', 'button');" + " abcd.appendChild(bt2);" + " var break1 = document.createElement('br');" + " abcd.appendChild(break1);" + " node = y;" + " y=y.nextSibling;" + " }" + " break; " +//<input type="button" onclick="" name"as" /> " }" + " }" + "}" + "}";//+ 

Simplemente, use el método addEventListener :

 buttonRef.addEventListener("click", function() { alert("Blah blah..."); }, false); 

(Tendrás que search una solución de browser addEventListener en Google. IE no es compatible con addEventListener )

Donde buttonRef es una reference al button. ¿Cómo puedes get esa reference? Hay muchas forms de hacer eso. Puede usar document.getElementById() o cualquier otro método de esta "familia".

 var element = document.createElement("input"); element.onclick = function() {alert('Clicked!');}; 

Probablemente la forma más fácil de browser cruzado es establecer el nombre del evento como una propiedad del elemento:

 Element.onclick = function () { // do something... } Element.onmouseup = function () { // do something else... } 

Debe adjuntar el nuevo evento al crear el elemento DOM.

Por ejemplo :

 var e = document.createElement('input'); e.onclick = function() { alert('Test'); };