lunes, 31 de agosto de 2009

Cómo usar etiquetas HTML con Builder.node

Al usar Builder.node para crear nodos, si queremos que el texto que usamos en dichos nodos sea procesado por el navegador como etiquetas html (scriptaculous hace que se muestren las etiquetas y no se muestren como html) tan sólo hay que sobreescribir la función _text de scriptaculous, realizando la siguiente declaración en cualquier parte del código:

Builder._text = function(text){
var div = document.createElement("div");
div.innerHTML = text;
return div;
}

De esta forma conseguimos que scriptaculous nos permita introducir etiquetas HTML en un nodo creado como texto.

Si usas prototype, es todavía más sencillo:

Builder._text = function(text){
return $(document.createElement("div")).update(text);
}

Otra solución es establecer la propiedad innerHTML del nodo con nuestro texto en lugar de añadirlo con Builder.node, ya que este último crea un nodo de texto:

var node = $(Builder.node('div', attributes, [
Builder.node('table', {height: '100%', width: '100%'}, [
Builder.node('tbody',[
Builder.node('tr', {align: 'center', valign: 'middle'}, [
Builder.node('td', {class: 'nodeText'})
])
])
])
]))

node.getElementsByClassName('nodeText')[0].update(text);

No hay comentarios:

Publicar un comentario