Foros del Web » Programando para Internet » Javascript »

AYUDA me funciona en Mozilla pero no en Explorer 8

Estas en el tema de AYUDA me funciona en Mozilla pero no en Explorer 8 en el foro de Javascript en Foros del Web. Hola comunidad: Tengo un script que me funciona perfectamente bien en Mozilla les explico: cuando le doy click a una lista/menu donde me sale una ...
  #1 (permalink)  
Antiguo 06/03/2011, 20:52
 
Fecha de Ingreso: febrero-2011
Ubicación: Caracas
Mensajes: 7
Antigüedad: 13 años, 2 meses
Puntos: 0
Pregunta AYUDA me funciona en Mozilla pero no en Explorer 8

Hola comunidad:

Tengo un script que me funciona perfectamente bien en Mozilla les explico: cuando le doy click a una lista/menu donde me sale una serie de opciones pero especificamente le doy click a Cursos me aparece otro lista/menu donde me sale la lista de los diferentes cursos, y si le doy a otra opcion se oculta la lista/menu que es lo que quiero esto funciona PERFECTAMENTE en Mozilla pero no me funciona en Explorer 8, la idea es que me funcione bien en cualquier navegador para que el usuario no tenga que apretar un boton adicional. Que puedo hacer?


<script>
function aparecerCursos(b)
{
if(b) { cCursos.style.visibility="visible"; } else { cCursos.style.visibility="hidden"; }
}
</script>


<select name="combo" size="1" id="combo">
<option selected="selected">Computaci&oacute;n</option>
<option onclick="aparecerCursos(false)">Software</option>
<option onclick="aparecerCursos(false)">Reparaci&oacute;n</option>
<option onclick="aparecerCursos(true)">Cursos</option>
<option onclick="aparecerCursos(false)">Pel&iacute;culas y/o Videos</option>
<option onclick="aparecerCursos(false)">Juegos</option>
<option onclick="aparecerCursos(false)">Otros</option>
</select>



<select id="cursos" name="cursos" size="1" >
<option>Excel B&aacute;sico</option>
</select>

<script>
cCursos=document.getElementById("cursos");
aparecerCursos(false);
</script>
  #2 (permalink)  
Antiguo 06/03/2011, 22:03
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: AYUDA me funciona en Mozilla pero no en Explorer 8

no todos los navegadores cargan el DOM de la misma forma, por lo que veo tienes un bloque de script al final que lógicamente se ejecutaría al final de que el DOM estuviese cargado y funcionaria perfecto, en este caso con FF, pero eso no quiere decir que IE otros navegadores lo hagan igual.

la solución es verificar si el DOM está completamente cargado antes de llamar a ese bloque, una opción rápida y sin complicaciones sería anidarlo dentro de una función y llamarla en el onload del body:

Código Javascript:
Ver original
  1. <script type="text/javascript">
  2.  
  3. function aparecerCursos(b)
  4. {
  5.      cCursos=document.getElementById("cursos");
  6.      if(b) { cCursos.style.visibility="visible"; } else { cCursos.style.visibility="hidden"; }
  7. }
  8. </script>

<body onload="aparecerCursos(false);">...
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #3 (permalink)  
Antiguo 06/03/2011, 22:11
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 19 años, 11 meses
Puntos: 834
Respuesta: AYUDA me funciona en Mozilla pero no en Explorer 8

Mmm... Hasta donde recuerdo Explorer no soporta onclick en el tag option por lo que hay que usar onchange en el elemento select.
Código PHP:
<!--esto no funciona en explorer: -->
<
form id="form1" name="form1" method="post" action="">
    <
select name="pp" id="pp">
      <
option onclick="alert(1)" value="1">uno</option>
      <
option onclick="alert(2)" value="2">dos</option>
 </
select>
</
form>
<!--
esto funciona en todos los navegadores: -->
<
form id="form2" name="form2" method="post" action="">
    <
select name="select" id="select" onchange="alert(this.selectedIndex)">
       <
option value="1">uno</option>
      <
option  value="2">dos</option>
    </
select>
</
form

Última edición por Panino5001; 06/03/2011 a las 22:17
  #4 (permalink)  
Antiguo 08/03/2011, 03:45
 
Fecha de Ingreso: febrero-2011
Ubicación: Caracas
Mensajes: 7
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: AYUDA me funciona en Mozilla pero no en Explorer 8

Cita:
Iniciado por Panino5001 Ver Mensaje
Mmm... Hasta donde recuerdo Explorer no soporta onclick en el tag option por lo que hay que usar onchange en el elemento select.
Código PHP:
<!--esto no funciona en explorer: -->
<
form id="form1" name="form1" method="post" action="">
    <
select name="pp" id="pp">
      <
option onclick="alert(1)" value="1">uno</option>
      <
option onclick="alert(2)" value="2">dos</option>
 </
select>
</
form>
<!--
esto funciona en todos los navegadores: -->
<
form id="form2" name="form2" method="post" action="">
    <
select name="select" id="select" onchange="alert(this.selectedIndex)">
       <
option value="1">uno</option>
      <
option  value="2">dos</option>
    </
select>
</
form
  #5 (permalink)  
Antiguo 08/03/2011, 03:48
 
Fecha de Ingreso: febrero-2011
Ubicación: Caracas
Mensajes: 7
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: AYUDA me funciona en Mozilla pero no en Explorer 8

Gracias por responder, pero ya habia intentado con onchance y tampoco funciona
  #6 (permalink)  
Antiguo 08/03/2011, 05:39
 
Fecha de Ingreso: febrero-2011
Ubicación: Caracas
Mensajes: 7
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: AYUDA me funciona en Mozilla pero no en Explorer 8

Cita:
Iniciado por maycolalvarez Ver Mensaje
no todos los navegadores cargan el DOM de la misma forma, por lo que veo tienes un bloque de script al final que lógicamente se ejecutaría al final de que el DOM estuviese cargado y funcionaria perfecto, en este caso con FF, pero eso no quiere decir que IE otros navegadores lo hagan igual.

la solución es verificar si el DOM está completamente cargado antes de llamar a ese bloque, una opción rápida y sin complicaciones sería anidarlo dentro de una función y llamarla en el onload del body:

Código Javascript:
Ver original
  1. <script type="text/javascript">
  2.  
  3. function aparecerCursos(b)
  4. {
  5.      cCursos=document.getElementById("cursos");
  6.      if(b) { cCursos.style.visibility="visible"; } else { cCursos.style.visibility="hidden"; }
  7. }
  8. </script>

<body onload="aparecerCursos(false);">...
La verdad no soy muy ducha en esto hice algunos cambios y me indica un mensaje que no se admite la etiqueta body en el atributo body, ademas me desaparece la lista /menu de cursos, computgacion etc...y me sale las opciones pero como texto:

<script>
function aparecerCursos(b)
{
if(b) { cCursos.style.visibility="visible"; } else { cCursos.style.visibility="hidden"; }
}
</script>

<body onload="combo" size="1" id="combo">

<body onload="aparecerCursos(false)">Computaci&oacute;n</body>
<body onload="aparecerCursos(false)">Software</body>
<body onload="aparecerCursos(false)">Reparaci&oacute;n</body>
<body onload="aparecerCursos(true)">Cursos;</body>
<body onload="aparecerCursos(false)">Pel&iacute;culas y/o Videos</body>
<body onload="aparecerCursos(false)">Juegos</body>
<body onload="aparecerCursos(false)">Otros</body>



<select id="cursos" name="cursos" size="1" >
<option>Excel B&aacute;sico</option>
</select>


<script type="text/javascript">

function aparecerCursos(b)
{
cCursos=document.getElementById("cursos");
if(b) { cCursos.style.visibility="visible"; } else { cCursos.style.visibility="hidden"; }
}
</script>

  #7 (permalink)  
Antiguo 08/03/2011, 07:36
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 19 años, 11 meses
Puntos: 834
Respuesta: AYUDA me funciona en Mozilla pero no en Explorer 8

Código PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<
html xmlns="http://www.w3.org/1999/xhtml">
<
head>
<
meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<
title>Documento sin título</title>
</
head>

<
body>
<
script>
function 
aparecerCursos(b)
{
    var 
cCursos=document.getElementById("cursos");

if(
b) { cCursos.style.visibility="visible"; } else { cCursos.style.visibility="hidden"; }
}
</script>


<select name="combo" size="1" id="combo" onchange="aparecerCursos(this.options[this.selectedIndex].innerHTML=='Cursos')">
<option selected="selected">Computaci&oacute;n</option>
<option>Software</option>
<option>Reparaci&oacute;n</option>
<option>Cursos</option>
<option>Pel&iacute;culas y/o Videos</option>
<option>Juegos</option>
<option>Otros</option>
</select>



<select id="cursos" name="cursos" size="1" >
<option>Excel B&aacute;sico</option>
</select>

<script>
aparecerCursos(document.getElementById("combo").options[document.getElementById("combo").selectedIndex].innerHTML=='Cursos');
</script>
</body>
</html> 
PD: tu último código tiene errores por todos lados: ni el html se salvó!
  #8 (permalink)  
Antiguo 08/03/2011, 07:38
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: AYUDA me funciona en Mozilla pero no en Explorer 8

a esto es a lo que se refiere panino. el indice de la opción con la que se mostrará el otro combo es 3 ya que el indice empieza en 0
Cita:
<script>
function aparecerCursos(b)
{
cCursos.style.visibility = b == 3 ? "visible" : "hidden";
}
</script>


<select name="combo" size="1" id="combo" onchange="aparecerCursos(this.selectedIndex);">
<option selected="selected">Computaci&oacute;n</option>
<option value="">Software</option>
<option value="">Reparaci&oacute;n</option>
<option value="">Cursos</option>
<option value="">Pel&iacute;culas y/o Videos</option>
<option value="">Juegos</option>
<option value="">Otros</option>
</select>



<select id="cursos" name="cursos" size="1" style="visibility: hidden;">
<option>Excel B&aacute;sico</option>
</select>

Etiquetas: auxilio, codigos, explorer, internet, mozilla, php
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 21:45.