Foros del Web » Programando para Internet » Javascript »

Bug de I Explorer 8.0 con getElemenById

Estas en el tema de Bug de I Explorer 8.0 con getElemenById en el foro de Javascript en Foros del Web. Buenas. Estoy haciendo una página ASP y Access. En una de las páginas tengo una especie de pequeña galeria , que es realmente una especie ...
  #1 (permalink)  
Antiguo 30/09/2009, 13:19
Avatar de potzio  
Fecha de Ingreso: septiembre-2009
Mensajes: 42
Antigüedad: 14 años, 8 meses
Puntos: 0
Bug de I Explorer 8.0 con getElemenById

Buenas. Estoy haciendo una página ASP y Access.
En una de las páginas tengo una especie de pequeña galeria , que es realmente una especie de ficha de una reformas realizadas, 4 campos de imagen(fotos) y un div en el que quiero que me aparezca la foto en la que me posicione(onmouseover).

Hasta hoy, me funcionaba el códicgo perfectamente, tanto en Explorer 6 como en Firefox y Crhome.
El problema es que hoy he actualizado a EXPLORER 8.0 y la página no me abre en Explorer, sí los demás, y me da el siguiente error:

Mensaje: 'document.getElementById(...)' es nulo o no es un objeto.

He mirado bastante por Internet, pero no encuentro ninguna solución, sólo he sacado claro que debe ser un BUG del EXPLORER, según dicen algunos. Pero no la solucion.

Os pongo el código, que muy amablemente me lo ofreció ADLER hace unas semanas:

<script type="text/javascript">
window.onload = function () {

var elementos = document.getElementById("miniaturas").getElementsB yTagName("IMG")
for (var i=0;i < elementos.length; i++) {
//alert(elementos[i].src)
elementos[i].onmouseover = function () {document.getElementById("fotog").innerHTML = "<img src="+this.src+" />";}
}
}
</script>

<body bgcolor="#000000" text="#FFFFFF" vlink="#FFFFFF">

<div id="contenedor">
<div id="cabecera"><img src="imagenes/logo.png" width="235" height="58" /></div>
<div id="menu">
<table width="100%">

<tr>
<td width="9%"><a href="index.asp">inicio</a></td>
<td width="9%">&nbsp;</td>
<td width="15%"><a href="reformasdivasp.asp">reformas</a></td>
<td width="9%">&nbsp;</td>
<td width="20%"><a href="colaboraciones.asp">colaboraciones</a></td>
<td width="7%">&nbsp;</td>
<td width="13%"><a href="proyectos.asp">proyectos</a></td>
<td width="9%">&nbsp;</td>
<td width="9%"><a href="contacto.asp">contacto</a></td>
</tr>
</table>
</div>
<div id="nombre"><%=(rs_reformas.Fields.Item("titulo"). Value)%></div>
<div id="fotog"></div>
<div id="miniaturas">
<img with="95" height="75" src="<%=(rs_reformas.Fields.Item("foto1").value)%> ">
<img with="95" height="75" src="<%=(rs_reformas.Fields.Item("foto2").value)%> ">
<img with="95" height="75" src="<%=(rs_reformas.Fields.Item("foto3").value)%> ">
<img with="95" height="75" src="<%=(rs_reformas.Fields.Item("foto4").value)%> ">
</div>

<div id="descripcion">
<p class="formtexto"><%=(rs_reformas.Fields.Item("des cripcion").value)%>
<p>
</div>
  #2 (permalink)  
Antiguo 30/09/2009, 13:30
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 4 meses
Puntos: 126
Respuesta: Bug de I Explorer 8.0 con getElemenById

Hola

Usa esta función

Código javascript:
Ver original
  1. var ns4 = (document.layers)? true:false
  2. var ie4 = (document.all)? true:false
  3. var ns6 = (document.getElementById)? true:false
  4.  
  5.  
  6. function captura_objeto(idnombre) {
  7.     if (ns6)
  8.     {
  9.     return document.getElementById(idnombre);
  10.     }
  11.     else if (ie4)
  12.     {
  13.     return document.all[idnombre];
  14.     }
  15.     else if (ns4)
  16.     {
  17.     return document.layers[idnombre];
  18.     }
  19.     else
  20.     {
  21.     return null;
  22.     }
  23. }

Y aquí la usas

Cita:
var elementos = captura_objeto("miniaturas").getElementsB yTagName("IMG")
Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #3 (permalink)  
Antiguo 30/09/2009, 16:01
Avatar de potzio  
Fecha de Ingreso: septiembre-2009
Mensajes: 42
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Bug de I Explorer 8.0 con getElemenById

No la entiendo bien.
¿Qué es ns4, ns6, ie4?

¿Id nombre que sería? ¿"miniaturas"?

Tampoco entiendo cuando me dices:

Y aquí la usas

Cita:
var elementos = captura_objeto("miniaturas").getElementsB yTagName("IMG")

¿Qué quieres decir con esto?

Gracias por todo.
  #4 (permalink)  
Antiguo 30/09/2009, 16:09
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: Bug de I Explorer 8.0 con getElemenById

el codigo de Adler es una funcion que reemplaza getElementById. ademas de copiar el codigo, lo unico que tienes que hacer es usar la funcion como lo has estado haciendo con getElementById, tal como muestra el ejemplo. en cuanto al codigo, idnombre es un parametro de la funcion donde va a capturar el valor que le pases cuando utilices la funcion. por tanto, sí, idnombre seria "miniaturas" cuando utilices la funcion.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #5 (permalink)  
Antiguo 30/09/2009, 16:16
Avatar de potzio  
Fecha de Ingreso: septiembre-2009
Mensajes: 42
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Bug de I Explorer 8.0 con getElemenById

Osea. Aver si lo entiendo. El codigo sería:

¿El código que me manda Adler, entre etiquetas de <script> </script> y debajo el código que yo tenía?

¿Esta linea donde tengo que ponerla?
¿O tengo que modificarla por la que yo tenía "var elementos = document.getElementById("miniaturas").getElementsB yTagName("IMG")" ?




Una cosa más. Código original:

<script type="text/javascript">
window.onload = function () {

var elementos = document.getElementById("miniaturas").getElementsB yTagName("IMG")
for (var i=0;i < elementos.length; i++) {
//alert(elementos[i].src)
elementos[i].onmouseover = function () {document.getElementById("fotog").innerHTML = "<img src="+this.src+" />";}
}
}
</script>


¿De aqui no tengo que cambiar nada?


Gracias, Zerokilled y Adler. Estoy muy pez en ésto y no lo entiendo bien.Perdonad por mi "retraso."
  #6 (permalink)  
Antiguo 30/09/2009, 16:26
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 3 meses
Puntos: 146
Respuesta: Bug de I Explorer 8.0 con getElemenById

pues a mi no me marca error en IE 8
  #7 (permalink)  
Antiguo 30/09/2009, 16:28
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: Bug de I Explorer 8.0 con getElemenById

Cita:
¿El código que me manda Adler, entre etiquetas de <script> </script> y debajo el código que yo tenía?
exacto. a tu codigo no le tienes que hacer gran cambio. solo te queda por reemplazar todos los document.getElementById por captura_objeto.
Cita:
¿Esta linea donde tengo que ponerla?
¿O tengo que modificarla por la que yo tenía "var elementos = document.getElementById("miniaturas").getElementsB yTagName("IMG")" ?
esa linea la dejas donde la tienes en tu codigo original, solo con el cambio que antes te indique.

@Myakire,
la verdad que no estoy entereado del error en iexplorer8 y tampoco puedo comprobarlo porque no tengo IE8. incluso me resulta curioso.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #8 (permalink)  
Antiguo 30/09/2009, 16:39
Avatar de potzio  
Fecha de Ingreso: septiembre-2009
Mensajes: 42
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Bug de I Explorer 8.0 con getElemenById

Hola Myryake.
Si buscas en Google, por ejemplo, "getElementById problemas", comprobarás que hay mucha gente con este problema.

A mi me ha pasado esta mañana, que he estado acabando la página, y con IE 6 me funcionaba correctamente , y también en los demás navegadores.

Me ha dado por actualizar el Explorer a la 8.0 y desde dreamweaver, cuando daba a vista en navegador me salía la pantalla enblanco, y un icono en forma de triángulo, de color amarillo, en la esquina inferior izquierda de la pantalla.

Le he dado doble click al icono y me decía que no reconocia el objeto getElementById, y es cuando me he puesto a buscar alguna solución.
Un saludo.
  #9 (permalink)  
Antiguo 30/09/2009, 16:41
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 3 meses
Puntos: 146
Respuesta: Bug de I Explorer 8.0 con getElemenById

cierto, curioso que marcase error el getElementById, y es que no le veo por que debiese de marcar error (salvo el espacio del getElementsB yTagName que creo fue insertado por el editor)

Esto funciona Ok en los 4 browsers que lo probé

Código:
<html>
<head>
<title>Page title</title>
<script type="text/javascript">
window.onload = function () {
var elementos = document.getElementById("miniaturas").getElementsByTagName("IMG")
for (var i=0;i < elementos.length; i++) { 
elementos[i].onmouseover = function () {document.getElementById("fotog").innerHTML = "<img src="+this.src+" />";} 
}
}
</script>

<body>
<div id="fotog"></div>
<div id="miniaturas">
<img with="95" height="75" src="http://www.forosdelweb.com/f13/images/dog_pet.jpg">
<img with="95" height="75" src="http://www.forosdelweb.com/f13/images/agropet-logo.jpg">
<img with="95" height="75" src="http://www.forosdelweb.com/f13/images/agropet-logop.jpg">
<img with="95" height="75" src="http://www.forosdelweb.com/f13/images/agropet-logop.gif">
</div>
</body>
</html>
Edito (me ganaste):

Si buscara getElementById problemas" seguro encontraría muchas páginas, y si buscara "innerHTML problemas " o "while problemas" también encontraría muchas páginas
Yo no aseguro que no exista algún problema, yo solo digo que a mi no me marca error en IE 8, that's all

Otra edición (no había leído tu mensaje completo)
Cita:
Le he dado doble click al icono y me decía que no reconocia el objeto getElementById, y es cuando me he puesto a buscar alguna solución.
El mensaje no te dice que no se reconoce al método getElementById, sino que no encuentra en la página un objeto llamado como lo llamaste que se ha invocado por medio de getElementById, eso es muy diferente

Ahora si ... saludos

Última edición por Myakire; 30/09/2009 a las 16:48
  #10 (permalink)  
Antiguo 30/09/2009, 16:48
Avatar de potzio  
Fecha de Ingreso: septiembre-2009
Mensajes: 42
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Bug de I Explorer 8.0 con getElemenById

Vale. Solo quería decir que es un problema bastante común, por lo que he leido.
Es más, mucha gente se preguntaba y otros repondían si el problema no sería del innerHTML y no del getelemen..
  #11 (permalink)  
Antiguo 30/09/2009, 16:51
Avatar de potzio  
Fecha de Ingreso: septiembre-2009
Mensajes: 42
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Bug de I Explorer 8.0 con getElemenById

Miakyre, mañana, cuando vaya a la oficina a la mañana, te confirmo el "error exacto" qu e me ha dado el IE.

Es que en mi casa no tengo instalado el 8 todavía.
  #12 (permalink)  
Antiguo 01/10/2009, 01:07
Avatar de potzio  
Fecha de Ingreso: septiembre-2009
Mensajes: 42
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Bug de I Explorer 8.0 con getElemenById

Mikyare, este es el error:

Detalles de error de página web

Agente de usuario: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727)
Fecha: Thu, 1 Oct 2009 07:06:45 UTC


Mensaje: 'document.getElementById(...)' es nulo o no es un objeto
Línea: 10
Carácter: 1
Código: 0
URI: http://localhost/domestica/detrefdiv.asp
  #13 (permalink)  
Antiguo 01/10/2009, 04:28
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 4 meses
Puntos: 126
Respuesta: Bug de I Explorer 8.0 con getElemenById

Hola

potzio o me equivoco o aún no has probado la función que te postee anteriormente. Yo uso IE8 y no me da problemas ni en un caso ni en otro

Myakire que bueno verte por aquí

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #14 (permalink)  
Antiguo 01/10/2009, 07:44
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 3 meses
Puntos: 146
Respuesta: Bug de I Explorer 8.0 con getElemenById

Cita:
Iniciado por potzio Ver Mensaje
Mensaje: 'document.getElementById(...)' es nulo o no es un objeto
Si, es el que habías posteado antes y ese error es lo que te comenté, que por medio de getElementById se esta intentado acceder a un objeto o a un control que no es existe. Y esto, según solo mi experiencia personal, es por errores del programador, específicamente en el nombre de los div's o de los controles, que los defines con mayúsculas/minúsculas o ambas, y en el getElementById los llamas con otra nomenclatura.

Eso estaba mal de por si, pero IE7 te consentía, pero ya no el IE8, checa eso, please.

Adler, thanks man, vueltas que se da uno por otros lares
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:07.