Retroceder   Foros del Web > Programación para sitios web > Javascript

Respuesta
 
Herramientas Desplegado
Antiguo 10-jul-2008, 02:26   #1 (permalink)
buzu llegará a ser famoso muy prontobuzu llegará a ser famoso muy pronto
 
Avatar de buzu
 
Fecha de Ingreso: octubre-2006
Ubicación: Los Angeles CA
Mensajes: 676
Información innerHTML al desnudo.

Eh regresado a Foros del web después de un lago tiempo de inactividad y me eh dado cuenta de que hay una considerable cantidad de usuarios preguntando acerca del innerHTML, o al menos así me parece. Es por eso que eh decidido escribir este breve articulo, si se le puede llamar así, acerca del tan misterioso innerHTML. Como siempre, escribiré con mi característico sarcasmo que algunos confunden con prepotencia, presunción y cosas mas. Espero no ofender a nadie, y si entraste acá esperando ver HTML porn, lamento decepcionarte, esto por aquello de al desnudo.

Sin mas, entremos en materia.

Que rayos es el innerHTML?
Bueno, pues según me cuenta mi abuela, innerHTML es otro de los raros inventos de MS, si MS es por Micro Soft. Como es de esperarse, innerHTML no forma parte de ningún estándar, o al menos no que buzu sepa, pero es como esos malditos videos de youtube, adictivo y una vez que lo usas es imposible dejar de hacerlo y es que neta que ¿Quien va a preferir echarse 20 lineas de código al hilo nomas pa' generar un enlace con estilos dentro de un h3 y agregarlo al documento cuando puede usar innerHTML y no gastar mas que si acaso un par de lineas?. Sin embargo, innerHTML es también un método [es mas bien una propiedad] ampliamente soportado y que la mayor parte del tiempo puede usarse sin problemas.

A mi me encanta leer. Sera mi tipo?
InnerHTML es un buen lector. Considera que tienes lo siguiente:
Código HTML:
<div id="p1">
     <p>Este es un párrafo dentro de un div con id igual a <em>p1</em>.</p>
</div>
Si hicieras una llamada a la propiedad innerHTML de este modo:

Código:
var contenido = document.getElementById('p1').innerHTML
recibirías un string que contendría lo siguiente:

Código HTML:
<p>Este es un párrafo dentro de un div con id igual a <em>p1</em>.</p>
Esto puede ser muy util en ciertas circunstancias. Por otro lado, innerHTML es una propiedad de escritura y no solo de lectura, lo que quiere decir que puedes indicar lo siguiente:

Código:
document.getElementById('p1').innerHTML = "A la goma con el contenido anterior."
Eso reemplazaría el contenido anterior por el texto entre comillas ("") después de el signo igual (=). Con lo que tu HTML quedaría de la siguiente manera:

Código HTML:
<div id="p1">
     A la goma con el contenido anterior.
</div>
Cuales son sus desventajas?
La primera desventaja que nos encontramos al querer usar innerHTML es que no es estándar. Hubo un tiempo, no hace mucho, que se puso de moda el poner el logotipo de la W3C en los sitios web para indicar que eran sitios web estándar. Aun que ya no esta tan de moda esa tendencia, el desarrollo estándar sigue teniendo gran peso para muchos clientes (especialmente los que entienden del tema) a la hora de contratar un desarrollador web.

Otra desventaja que encontramos es que un mal uso podría terminar echando a perder el árbol de tu documento. Cuando usas métodos DOM, como es el caso de createElement, no hay manera de que el contenido generado este mal formateado. Sin embargo, con el innerHTML si existe esa posibilidad. Por supuesto que desarrolladores precavidos por lo regular no comenten esa clase de errores, pero no falta algún despistado que termine haciendo algo como:

Código:
mielemento.innerHTML = "<spam>Ya jodí mi <a href="">código</spam></a>";
Ventajas?
Ye mencione algunas de sus ventajas, pero creo que la mejor es que nos permite trabajar a mayor escala y con mas rapidez.

Generalmente, en un post o cualquier otra cosa, te sugeriría que te apegaras a los estándares, pero aquí simplemente muestro los hecho sin plantear mi opinión en ningún momento. Por lo tanto te dejare a ti ser el juez y tomar la mejor decisión en cuanto a permanecer estándar o irte al lado de innerHTML. Algunas veces una combinación de ambas posturas es lo mejor que puedes hacer.

Saludo y espero que te haya servido esta breve introducción al innerHTML. Algunos puntos estan basados en la seccion innerHTML del libro Bulletproof Ajax de Jeremy Keith.
__________________
Te gustan mis aportes? Dame algunos puntos de carma...No te gustan mis aportes? Mandame un Mp con tus comentarios, sugerencias o criticas... Ambos son bienvenidos!
buzu está desconectado   Responder Citando
Antiguo 10-jul-2008, 06:47   #2 (permalink)
Colaborador
David el Grande llegará a ser famoso muy prontoDavid el Grande llegará a ser famoso muy prontoDavid el Grande llegará a ser famoso muy pronto
 
Avatar de David el Grande
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 5.511
De acuerdo Respuesta: innerHTML al desnudo.

Excelente aporte, buzu.

Recuerda que también puedes colocar en las FAQ's los códigos relativos a preguntas frecuentes en el foro.

Saludos
__________________
"En la vida muchas veces tenemos que ser aprendices, y muchas veces maestros"
P.S.: Pregunta siempre en el foro correcto.
David el Grande está desconectado   Responder Citando
Antiguo 10-jul-2008, 09:59   #3 (permalink)
buzu llegará a ser famoso muy prontobuzu llegará a ser famoso muy pronto
 
Avatar de buzu
 
Fecha de Ingreso: octubre-2006
Ubicación: Los Angeles CA
Mensajes: 676
Respuesta: innerHTML al desnudo.

OK! Gracias.
__________________
Te gustan mis aportes? Dame algunos puntos de carma...No te gustan mis aportes? Mandame un Mp con tus comentarios, sugerencias o criticas... Ambos son bienvenidos!
buzu está desconectado   Responder Citando
Antiguo 10-jul-2008, 10:55   #4 (permalink)
Moderador
caricatos es realmente agradablecaricatos es realmente agradablecaricatos es realmente agradablecaricatos es realmente agradablecaricatos es realmente agradablecaricatos es realmente agradable
 
Avatar de caricatos
 
Fecha de Ingreso: noviembre-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 12.462
Respuesta: innerHTML al desnudo.

Hola:

Para fastidiar un poco la cosa ...

Si tenemos algo así:
<div id="trampa">
<table>
<tr>
<td>
¡Aquí falla algo!
</td>
</tr>
</table>
</div>

¿Qué nos muestra la instrucción innerHTML del div con id="trampa"?

Sobre el tema de la rapidez, creo que alguien ya ha hecho algunas pruebas, y más rápido era el DOM puro (tal vez haya sido derkenuke :pensando (¡Hola )

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
caricatos está desconectado   Responder Citando
Antiguo 10-jul-2008, 13:39   #5 (permalink)
Bellenger ha deshabilitado el karma
 
Avatar de Bellenger
 
Fecha de Ingreso: noviembre-2004
Ubicación: Lima Peru
Mensajes: 552
Enviar un mensaje por MSN a Bellenger Enviar un mensaje por Skype™ a Bellenger
Alegría Respuesta: innerHTML al desnudo.

Interesante, nunca hubiera imaginado que saldria esto:
Código HTML:
<table>
<tbody>
<tr>
<td>
¡Aquí falla algo!
</td>
</tr>
</tbody>
</table>
Y jugando un poco con el codigo de caricatos:
Código HTML:
<div id="trampa">
<table>
<tr><th>error</th></tr>
<tbody>
<tr>
<td>
¡Aquí falla algo!
</td>
</tr>
</tbody>
</table>
</div>
me tope con este otro detallito, pruebenlo y vean...
Que bueno que lei el post, servira mucho a comprender ciertos errores al utilizar innerHTML.
Saludos...
__________________
Un Caballero Jura Lealtad. Usa su espada para suprimir la Injusticia No Conoce el Odio y Tampoco el AMOR...

Última edición por Bellenger; 10-jul-2008 a las 13:51.
Bellenger está desconectado   Responder Citando
Antiguo 10-jul-2008, 15:15   #6 (permalink)
buzu llegará a ser famoso muy prontobuzu llegará a ser famoso muy pronto
 
Avatar de buzu
 
Fecha de Ingreso: octubre-2006
Ubicación: Los Angeles CA
Mensajes: 676
Respuesta: innerHTML al desnudo.

Caricatos, cuando hablaba de la rapidez, me refería a la rapidez con la que escribes el código. Ahí si no me vas a decir que es mas rápido escribir un montón de createElement y appends que un simple innerHTML. Como quiera que sea y aun que dije que no daría mi opinión, yo no lo recomendaría ampliamente.
__________________
Te gustan mis aportes? Dame algunos puntos de carma...No te gustan mis aportes? Mandame un Mp con tus comentarios, sugerencias o criticas... Ambos son bienvenidos!
buzu está desconectado   Responder Citando
Antiguo 10-jul-2008, 15:16   #7 (permalink)
buzu llegará a ser famoso muy prontobuzu llegará a ser famoso muy pronto
 
Avatar de buzu
 
Fecha de Ingreso: octubre-2006
Ubicación: Los Angeles CA
Mensajes: 676
Respuesta: innerHTML al desnudo.

Ah, por cierto, con respecto a lo del código, es un buen detalle, debo confesar que no lo sabia. Sin embargo, en la gran mayoría de los casos, por no decir en todos, no causaría gran problema. Buen aporte caricatos.
__________________
Te gustan mis aportes? Dame algunos puntos de carma...No te gustan mis aportes? Mandame un Mp con tus comentarios, sugerencias o criticas... Ambos son bienvenidos!
buzu está desconectado   Responder Citando
Respuesta

Calificación: Calificación de Tema: 2 votos, 3,50 de promedio.


Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code is Activado
Caritas están Activado
[IMG] está Activado
Código HTML está Desactivado


La Zona horaria es GMT -6. Ahora son las 14:05.


Message Board Statistics

LinkBacks Enabled by vBSEO 3.1.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93