Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] Problema con javascript y display

Estas en el tema de Problema con javascript y display en el foro de Javascript en Foros del Web. Hola a todos, solo tengo que mostrar unos simples divs con una funcion de javascript mediante unos botones pero es que no me hace caso, ...
  #1 (permalink)  
Antiguo 08/02/2013, 14:28
Avatar de legomolina  
Fecha de Ingreso: junio-2011
Ubicación: Valencia
Mensajes: 165
Antigüedad: 13 años, 5 meses
Puntos: 3
Problema con javascript y display

Hola a todos,
solo tengo que mostrar unos simples divs con una funcion de javascript mediante unos botones pero es que no me hace caso, supongo que algo tendre mal, pero no se el que. Os dejo el codigo a ver si vosotros me decis el problema, es que me lleva de cabeza.
Funcion
Código Javascript:
Ver original
  1. function menus_desplegable(k) {
  2.    
  3.     var d=document.getElementById("descripcion");
  4.     var i=document.getElementById("info");
  5.     var r=document.getElementById("requisitos");
  6.     var m=document.getElementById("multimedia");
  7.    
  8.     switch(k) {
  9.     case 1:
  10.         d.sytle.display="none";
  11.         i.style.display="";
  12.         r.style.display="hidden";
  13.         m.style.display="hidden";
  14.         break;
  15.        
  16.     case 2:
  17.         d.sytle.display="hidden";
  18.         i.style.display="visible";
  19.         r.style.display="hidden";
  20.         m.style.display="hidden";
  21.         break;
  22.        
  23.     case 3:
  24.         d.sytle.display="hidden";
  25.         i.style.display="hidden";
  26.         r.style.display="visible";
  27.         m.style.display="hidden";
  28.         break;
  29.        
  30.     case 4:
  31.         d.sytle.display="hidden";
  32.         i.style.display="hidden";
  33.         r.style.display="hidden";
  34.         m.style.display="visible";
  35.         break;
  36.            
  37.     default:
  38.         d.sytle.display="visible";
  39.         i.style.display="hidden";
  40.         r.style.display="hidden";
  41.         m.style.display="hidden";
  42.         break;
  43.  
  44.     }
  45. }
  46.  
  47. </script>
Controles que manejan los distintos divs a ocultar/mostrar
Código HTML:
Ver original
  1. <div class="game_buttons">
  2.                         <a href="javascript:menus_desplegable(1);" ><img title="Ver descripcion" alt="Ver descripcion" src="ima/iconos/iconodescripcion.png" onmouseover="this.src='ima/iconos/iconodescripcion2.png'" onmouseout="this.src='ima/iconos/iconodescripcion.png'" /></a>
  3.                         <a href="javascript:menus_desplegable(2);" ><img title="Ver informacion" alt="Ver informacion" src="ima/iconos/iconoinfo.png" onmouseover="this.src='ima/iconos/iconoinfo2.png'" onmouseout="this.src='ima/iconos/iconoinfo.png'" /></a>
  4.                         <a href="javascript:menus_desplegable(3);" ><img title="Ver requisitos minimos" alt="Ver requisitos minimos" src="ima/iconos/iconorequisitos.png" onmouseover="this.src='ima/iconos/iconorequisitos2.png'" onmouseout="this.src='ima/iconos/iconorequisitos.png'" /></a>
  5.                         <a href="javascript:menus_desplegable(4);" ><img title="Ver multimedia" alt="Ver multimedia" src="ima/iconos/iconomultimedia.png" onmouseover="this.src='ima/iconos/iconomultimedia2.png'" onmouseout="this.src='ima/iconos/iconomultimedia.png'" /></a>
  6.                     </div>
Código HTML:
Ver original
  1. <div class="menus_desplegable" id="descripcion">
  2.                     Descripción.
  3.                     </div><div class="menus_desplegable" id="info">
  4.                     Info
  5.                     </div><div class="menus_desplegable" id="requisitos">
  6.                     Requisitos.
  7.                     </div><div class="menus_desplegable" id="multimedia">
  8.                     Multimedia.
  9.                     </div>

Gracias por vuestra atención
  #2 (permalink)  
Antiguo 08/02/2013, 14:34
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 17 años, 4 meses
Puntos: 1567
Respuesta: Problema con javascript y display

Por lo pronto los valores para la propiedad display para mostrar u ocultar un elemento son:
"block" y "none"

"visible" y "hidden" se aplican a la propiedad visibility

Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #3 (permalink)  
Antiguo 08/02/2013, 18:35
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 16 años, 6 meses
Puntos: 528
Respuesta: Problema con javascript y display

También se puede aplicar "table" al display, para casos donde se requiera que el div pueda crecer.
  #4 (permalink)  
Antiguo 09/02/2013, 05:44
Avatar de legomolina  
Fecha de Ingreso: junio-2011
Ubicación: Valencia
Mensajes: 165
Antigüedad: 13 años, 5 meses
Puntos: 3
Respuesta: Problema con javascript y display

Hola, he cambiado donde ponía "visible" por "block" y donde "hidden" por "none" pero sigue sin funcionar y no se porque. Me lleva loco. A ver si a alguien se le ocurre algo.
Gracias

PD :Por cierto, he pensado que igual no valia ponerlo en href y en vez de ahí, he puesto onClick="menus_desplegable(1);" a ver si asi funcionaba pero tampoco.
  #5 (permalink)  
Antiguo 09/02/2013, 07:21
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 17 años, 4 meses
Puntos: 1567
Respuesta: Problema con javascript y display

El problema es que con
elemento.style.display, solo podés recuperar el valor se la propiedad css es declarada en el atributo style, en el caso de querer saber un valor definido dentro de
<style>
#capa{
display: none;
}
</style>

debés usar el método window.getComputedStyle

Ejemplo
Código HTML:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  2. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <title>titulo</title>
  5. <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  6.  
  7. <style type="text/css">
  8. /*<![CDATA[*/
  9.  
  10. #hola{
  11. color: #000000;
  12. }
  13.  
  14. /*]]>*/
  15. <script type="text/javascript">
  16. //<![CDATA[
  17. /* script */
  18. function menus_desplegable() {
  19. var d=document.getElementById("hola");
  20. alert(d.style.display);
  21. alert(d.style.color);
  22. }
  23.  
  24.  
  25.  
  26. function menus_desplegable2(elemento,propiedad){
  27. var d = document.getElementById(elemento);
  28. if (d.currentStyle){// ie<9
  29. var valorPropiedad = d.currentStyle[propiedad];
  30. }else if (window.getComputedStyle){
  31. var valorPropiedad = document.defaultView.getComputedStyle(d,null).getPropertyValue(propiedad);
  32. }
  33. alert(d.style.display);
  34. alert(valorPropiedad);
  35. }
  36.  
  37.  
  38. //]]>
  39. </script>  
  40. </head>
  41. <button onclick="menus_desplegable();">ver display y color div hola</button>
  42. <button onclick="menus_desplegable2('hola','color');">ver display y color div hola, método 2</button>
  43. <div class="menus_desplegable" id="hola" style="display:none;">Descripción</div>
  44. </body>
  45. </html>

Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #6 (permalink)  
Antiguo 09/02/2013, 07:52
Avatar de legomolina  
Fecha de Ingreso: junio-2011
Ubicación: Valencia
Mensajes: 165
Antigüedad: 13 años, 5 meses
Puntos: 3
Respuesta: Problema con javascript y display

la cosa es que los tengo ordenados dentro de una css.
Ademas yo esto ya lo hice anteriormente y me funciono perfectamente.
Esa es la unica solucion? O se puede hacer de otro modo pero que valga para lo mismo, es Decir, mostrar y ocultar una info?
Gracias
  #7 (permalink)  
Antiguo 09/02/2013, 11:30
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 17 años, 4 meses
Puntos: 1567
Respuesta: Problema con javascript y display

si, me olvidé otro detalle, yo lo corregi cuando lo probé pero no te lo mencione


que error observás en esto

d.sytle.display="block";
i.style.display="none";
r.style.display="none";
m.style.display="none";

y que se repite en el resto para d

Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #8 (permalink)  
Antiguo 09/02/2013, 12:24
Avatar de legomolina  
Fecha de Ingreso: junio-2011
Ubicación: Valencia
Mensajes: 165
Antigüedad: 13 años, 5 meses
Puntos: 3
Respuesta: Problema con javascript y display

Style
Mierda
De todas formas sigue sin ir. Me voy a pegar un tiro. Con la funcion que dijiste vale para estilos en una css?
Gracias
  #9 (permalink)  
Antiguo 09/02/2013, 12:35
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 7 meses
Puntos: 1284
Respuesta: Problema con javascript y display

Hola:

¿A qué te refieres con:
Cita:
Iniciado por legomolina Ver Mensaje
...vale para estilos en una css?...
Los estilos en una sección style pueden ser por clases... pero supongo que te refieres a algo distinto.

Hay más estilos para display como inline, pero para elementos de bloque "div" deben ser block y none...

Si no te va, seguro que tienes algún error que provoca que no se ejecute tu función. Revisa la consola de errores de tu navegador.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo

Última edición por caricatos; 09/02/2013 a las 12:36 Razón: ortografía
  #10 (permalink)  
Antiguo 09/02/2013, 12:41
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 17 años, 4 meses
Puntos: 1567
Respuesta: Problema con javascript y display

Cita:
Iniciado por legomolina Ver Mensaje
Style
Mierda
De todas formas sigue sin ir. Me voy a pegar un tiro. Con la funcion que dijiste vale para estilos en una css?
Gracias
haceme un favor, pasa el código completo tal cual lo tenes ahora, html, css, javascript, pero en un html único

Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #11 (permalink)  
Antiguo 09/02/2013, 15:26
Avatar de legomolina  
Fecha de Ingreso: junio-2011
Ubicación: Valencia
Mensajes: 165
Antigüedad: 13 años, 5 meses
Puntos: 3
Respuesta: Problema con javascript y display

Aqui te dejo el codigo de la pag. Aun falta por añadir varias cosillas.

Codigo de la pag:
Código HTML:
Ver original
  1. <!DOCTYPE HTML>
  2. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  3. <link href="estilo/clasicosprueba.css" rel="Stylesheet" type="text/css" />
  4.  
  5. <script language="javascript" type="text/javascript">
  6. function menus_desplegable(k) {
  7.    
  8.     var d=document.getElementById("descripcion");
  9.     var i=document.getElementById("info");
  10.     var r=document.getElementById("requisitos");
  11.     var m=document.getElementById("multimedia");
  12.    
  13.     switch(k) {
  14.     case 1:
  15.         d.style.display="block";
  16.         i.style.display="none";
  17.         r.style.display="none";
  18.         m.style.display="none";
  19.         break;
  20.        
  21.     case 2:
  22.         d.style.display="none";
  23.         i.style.display="block";
  24.         r.style.display="none";
  25.         m.style.display="none";
  26.         break;
  27.        
  28.     case 3:
  29.         d.style.display="none";
  30.         i.style.display="none";
  31.         r.style.display="block";
  32.         m.style.display="none";
  33.         break;
  34.        
  35.     case 4:
  36.         d.style.display="none";
  37.         i.style.display="none";
  38.         r.style.display="none";
  39.         m.style.display="block";
  40.         break;
  41.            
  42.     default:
  43.         d.style.display="block";
  44.         i.style.display="none";
  45.         r.style.display="none";
  46.         m.style.display="none";
  47.         break;
  48.  
  49.     }
  50. }
  51.  
  52. </head>
  53.  
  54.     <!-- Tabla contenedora  100%-width -->
  55.     <table class="table_container">
  56.         <tr>
  57.             <td>
  58.                 <!-- Contenedor de los botones del menu 60px-heigth; fixed-position -->
  59.                 <div class="menu_button_container">
  60.                     <table>
  61.                         <!-- cada boton 20%-width -->
  62.                         <tr>
  63.                             <td class="menu_button">
  64.                                 <img src="ima/boton/accion1.png" onmouseout="this.src='ima/boton/accion1.png'" onmouseover="this.src='ima/boton/accion2.png'" />
  65.                             </td>
  66.                             <td class="menu_button">
  67.                                 Aventura
  68.                             </td>
  69.                             <td class="menu_button">
  70.                                 <img src="ima/boton/conduccion1.png" onmouseout="this.src='ima/boton/conduccion1.png'" onmouseover="this.src='ima/boton/conduccion2.png'" />
  71.                             </td>
  72.                             <td class="menu_button">
  73.                                 <img src="ima/boton/plataformas1.png" onmouseout="this.src='ima/boton/plataformas1.png'" onmouseover="this.src='ima/boton/plataformas2.png'" />
  74.                             </td>
  75.                             <td class="menu_button">
  76.                                 Varios
  77.                             </td>
  78.                         </tr>
  79.                     </table>
  80.                 </div>
  81.                 <!-- Contenedor principal alojado justo abajo de los botones -->
  82.                 <div class="main_frame_container">
  83.                    
  84.                     <!-- Botones descripcion, info, requisitos, multimedia -->
  85.                     <div class="game_buttons">
  86.                         <a href="#" onClick="menus_desplegable(1);" ><img title="Ver descripcion" alt="Ver descripcion" src="ima/iconos/iconodescripcion.png" onmouseover="this.src='ima/iconos/iconodescripcion2.png'" onmouseout="this.src='ima/iconos/iconodescripcion.png'" /></a>
  87.                         <a href="#" onClick="menus_desplegable(2);" ><img title="Ver informacion" alt="Ver informacion" src="ima/iconos/iconoinfo.png" onmouseover="this.src='ima/iconos/iconoinfo2.png'" onmouseout="this.src='ima/iconos/iconoinfo.png'" /></a>
  88.                         <a href="#" onClick="menus_desplegable(3);" ><img title="Ver requisitos minimos" alt="Ver requisitos minimos" src="ima/iconos/iconorequisitos.png" onmouseover="this.src='ima/iconos/iconorequisitos2.png'" onmouseout="this.src='ima/iconos/iconorequisitos.png'" /></a>
  89.                         <a href="#" onClick="menus_desplegable(4);" ><img title="Ver multimedia" alt="Ver multimedia" src="ima/iconos/iconomultimedia.png" onmouseover="this.src='ima/iconos/iconomultimedia2.png'" onmouseout="this.src='ima/iconos/iconomultimedia.png'" /></a>
  90.                     </div>
  91.                    
  92.                     <div class="menus_desplegable" id="descripcion">
  93.                     Descripción.
  94.                     </div>
  95.                    
  96.                     <div class="menus_desplegable" id="info">
  97.                     <table width="100%">
  98.                                 <tr>
  99.                                     <td style="width:30%">
  100.                                         Desarrollador:
  101.                                     </td>
  102.                                     <td>
  103.                                         Desarrollador respuesta
  104.                                     </td>
  105.                                    
  106.                                 </tr>
  107.                                 <tr>
  108.                                     <td>
  109.                                         Distribuidor:
  110.                                     </td>
  111.                                     <td>
  112.                                         Distribuidor respuesta
  113.                                     </td>
  114.                                    
  115.                                 </tr>
  116.                                 <tr>
  117.                                     <td>
  118.                                         Plataformas:
  119.                                     </td>
  120.                                     <td>
  121.                                         Plataformas respuesta
  122.                                     </td>
  123.                                 </tr>
  124.                             </table>
  125.                 </div>
  126.                 <div class="menus_desplegable"  id="requisitos">
  127.                     <table width="100%">
  128.                                 <tr>
  129.                                     <td>
  130.                                         Sistema operativo:
  131.                                     </td>
  132.                                     <td>
  133.                                         Sistema operativo respuesta
  134.                                     </td>
  135.                                     <td>
  136.                                         Memoria RAM:
  137.                                     </td>
  138.                                     <td>
  139.                                         Memoria RAM respuesta
  140.                                     </td>
  141.                                     <td>
  142.                                         Procesador:
  143.                                     </td>
  144.                                     <td>
  145.                                         Procesador respuesta
  146.                                     </td>
  147.            
  148.                                 </tr>
  149.                                 <tr>
  150.                                     <td>
  151.                                         Disco Duro:
  152.                                     </td>
  153.                                     <td>
  154.                                         Disco Duro respuesta
  155.                                     </td>
  156.                                     <td>
  157.                                         Tarjeta de sonido:
  158.                                     </td>
  159.                                     <td>
  160.                                         Tarjeta de sonido respuesta
  161.                                     </td>
  162.                                     <td>
  163.                                         CD/DVD:
  164.                                     </td>
  165.                                     <td>
  166.                                         CD/DVD respuesta
  167.                                     </td>
  168.            
  169.                                 </tr>
  170.                                 <tr>
  171.                                     <td>
  172.                                         Periféricos:
  173.                                     </td>
  174.                                     <td>
  175.                                         Periféricos respuesta
  176.                                     </td>
  177.                                     <td>
  178.                                         DirectX:
  179.                                     </td>
  180.                                     <td>
  181.                                         DirectX respuesta
  182.                                     </td>
  183.                                     <td>
  184.                                         Tarjeta gráfica:
  185.                                     </td>
  186.                                     <td>
  187.                                         Tarjeta gráfica respuesta
  188.                                     </td>
  189.            
  190.                                 </tr>
  191.                             </table>
  192.                 </div>
  193.                 <div class="menus_desplegable" id="multimedia">
  194.                     <table width="100%">
  195.                         <tr>
  196.                             <td>
  197.                                 Imagenes
  198.                             </td>
  199.                         </tr>
  200.                         <tr>
  201.                             <td>
  202.                                 Videos
  203.                             </td>
  204.                         </tr>
  205.                     </table>
  206.                 </div>
  207.                 </div>
  208.             </td>
  209.         </tr>
  210.     </table>
  211. </body>
  212. </html>


Codigo del archivo clasicosprueba.css
Código CSS:
Ver original
  1. /* CSS Document */
  2. .table_container {
  3.     width:100%;
  4. }
  5. .menu_button {
  6.     width: 20%;
  7. }
  8. .menu_button_container {
  9.     position: fixed;
  10.     height: 60px;
  11.     background-color: #36F;
  12.     top: 0px;
  13.     left: 0px;
  14.     width: 100%;
  15. }
  16. .main_frame_container {
  17.     left: 0px;
  18.     top: 60px;
  19.     position: absolute;
  20.     width: 100%;
  21. }
  22. .game_buttons {
  23.     background-color: #39C;
  24. }
  25. .menus_desplegable{
  26.     position: relative;
  27.     margin:15px;
  28.     visibility: hidden;
  29. }
  #12 (permalink)  
Antiguo 09/02/2013, 16:43
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 7 meses
Puntos: 1284
Respuesta: Problema con javascript y display

Hola:

No sé porqué usas enlaces si no tienes intención de enlazar... si te interesa que haya una mano, puedes usar estilos... <a href="#"...> es un enlace interno al tope de la página

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #13 (permalink)  
Antiguo 09/02/2013, 17:33
Avatar de legomolina  
Fecha de Ingreso: junio-2011
Ubicación: Valencia
Mensajes: 165
Antigüedad: 13 años, 5 meses
Puntos: 3
Respuesta: Problema con javascript y display

Hola.
Como lo hago? Porque yo quiero que para abrir esos divs halla que pulsar una imagen como la que hay. Pense en <button> pero eso pone la imagen dentro del boton
Gracias
  #14 (permalink)  
Antiguo 09/02/2013, 17:41
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 17 años, 4 meses
Puntos: 1567
Respuesta: Problema con javascript y display

Cita:
Iniciado por legomolina Ver Mensaje
Hola.
Como lo hago? Porque yo quiero que para abrir esos divs halla que pulsar una imagen como la que hay. Pense en <button> pero eso pone la imagen dentro del boton
Gracias
una cosa a la vez
no te funciona por lo siguiente, en el menu etás trabajando con style.display, y en el css usas

.menus_desplegable{
position: relative;
margin:15px;
visibility: hidden;
}
Entonces no te la cambia, debería ser

.menus_desplegable{
position: relative;
margin:15px;
display: none;
}

lo que te señala @caricatos es lo correcto.
en lugar de
<a href="#" onclick="..."><img src=...></a>
hacés sencillamente

<img onclick="menu_desplegable(1);" src="".... onmouseover... onmouseout... style="cursor: pointer" />.....

con eso llamas la función y tenés la "manito" sobre el menu

SAludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #15 (permalink)  
Antiguo 10/02/2013, 06:06
Avatar de legomolina  
Fecha de Ingreso: junio-2011
Ubicación: Valencia
Mensajes: 165
Antigüedad: 13 años, 5 meses
Puntos: 3
Respuesta: Problema con javascript y display

Muchas gracias a todos, al final era lo que decía emprear. He cambiado el estilo del .css y funciona perfectamente. De todas formas, muchisimas gracias a todos.

Etiquetas: display, funcion
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 18:06.