miércoles, 17 de febrero de 2010

Javascript: InnerHTML no cambia después de la primera vez.

Intentaba cambiar dinámicamente el atributo innerHTML de un elemento span. El código JS inicial funcionaba solo la primera vez, pero al dar clic en el botón que hace el cambio del atributo, no funcionaba.

El objeto Span estaba dentro de un elemento Div y éste a su vez es mostrado por un ModalPopupExtender que además está fuera del UpdatePanel.

El problema era que al dar clic sobre el botón que muestra un texto que dice "Sí" del ModalPopup, éste no hacía nada y el modal popup no se cerraba.. Entonces procedí a crear el Trigger del botón. Tuve el resultado esperado, pero al intentar borrar el segundo item de un grid, el mensaje del span no aparecía. A pesar de que la propiedad innerHTML se estaba asignando, éste no se mostraba en pantalla.

Solución: Quitar el trigger y programarle al botón "Sí" codigo javascript para cerrar el modalpopup con javascript, y listo!

Otra alternativa es inyectar el elemento TextNode con ayuda del DOM (Document Object Model).

Ejemplo:

var padre = $get('div');
while (padre.firstChild)padre.removeChild(padre.firstChild);
var nuevo = document.createElement("span");
nuevo.appendChild(document.createTextNode("Nuevo valor:" + codigo);
padre.appendChild(nuevo);

No hay comentarios: