Perl en Español

  1. Home
  2. Tutoriales
  3. Foro
  4. Artículos
  5. Donativos
  6. Publicidad
 
Índice general » Otros Temas » JavaScript » Función externa no hace lo que debería Responder al tema
Nuevo tema


Página 1 de 1  [ 4 mensajes ] 
 
Nota 2011-09-12 17:55 @788

Perlero Nuevo
Registrado: 2011-09-12 17:49 @784
Mensajes: 3
Función externa no hace lo que debería
Hola, en el siguiente programa me aparece la ventana de alert() pero me sale vacía en lugar de indicar el dato que le pido (height). ¿Alguien puede echarme un cable?

HTML:
Syntax: [ Download ] [ Hide ]
Using html4strict Syntax Highlighting
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
  2. "http://www.w3.org/TR/html4/strict.dtd">
  3.  
  4. <html>
  5. <head>
  6. <title></title>
  7.  
  8. <link rel="stylesheet" href="estilo.css" type="text/css" media="screen"></link>
  9. <script type="text/javascript" src="biblioteca.js"></script>
  10.  
  11. </head>
  12.  
  13. <body>
  14.  
  15. <div id="bloqcent">
  16.  
  17. <ul id="departamentos">
  18. <li id="departienda">TIENDA</li>
  19. <li id="deparreparaciones">REPARACIONES</li>
  20. </ul>
  21.  
  22. <div id="cuerpo">cuerpo
  23. <div id="tienda" name="hola"></div>
  24. <div id="reparaciones"></div>
  25. </div>
  26. </div>
  27.  
  28. </body>
  29. </html>



CSS:
Syntax: [ Download ] [ Hide ]
Using html4strict Syntax Highlighting
  1. #bloqcent{float:left;
  2. width:70%;
  3. }
  4.  
  5.  
  6. #departamentos li{float:left;
  7. width:20%;
  8. height:25px;
  9. text-align:center;
  10. margin-right:1%;}
  11.  
  12. #cuerpo{clear:left;
  13. border:1px solid black;
  14. height:300px;}
  15.  
  16. #tienda{height:100px;background-color:orange;display:block;}
  17. #reparaciones{height:100px;background-color:blue;display:block;}
  18.  



JS:
Syntax: [ Download ] [ Hide ]
Using javascript Syntax Highlighting
  1. function cambiardepar()
  2. {
  3. var nombre=document.getElementById("tienda");
  4. alert(nombre.style.height);
  5. }
  6.  
  7. window.onload = function()
  8. {
  9. document.getElementById("departienda").onclick = cambiardepar;
  10. document.getElementById("deparreparaciones").onclick =cambiardepar;
  11. }



En este otro caso veo que me funciona la cosa utilizando getElementById() pero no usando getElementsByName(). ¿Qué estoy haciendo mal?

(El HTML y CSS son los mismos que los anteriores)

JS (sí funciona):

Syntax: [ Download ] [ Hide ]
Using javascript Syntax Highlighting
  1. function cambiardepar()
  2. {
  3. document.getElementById("tienda").style.display="none";
  4. }
  5.  
  6. window.onload = function()
  7. {
  8. document.getElementById("departienda").onclick = cambiardepar;
  9. document.getElementById("deparreparaciones").onclick =cambiardepar;
  10. }
  11.  



JS (no funciona):

Syntax: [ Download ] [ Hide ]
Using javascript Syntax Highlighting
  1. function cambiardepar()
  2. {
  3. document.getElementsByName("hola").style.display=" none";
  4. }
  5.  
  6. window.onload = function()
  7. {
  8. document.getElementById("departienda").onclick = cambiardepar;
  9. document.getElementById("deparreparaciones").onclick =cambiardepar;
  10. }



A ver si alguien puede sacarme de dudas. Gracias.


Nota 2011-09-13 07:10 @340
Avatar de Usuario
Administrador
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España
Mensajes: 10250
Re: Función externa no hace lo que debería
El problema es que .style se refiere al estilo que tiene el objeto, pero NO al estilo heredado del CSS.

Hay que hacer otra cosa para acceder a los estilos CSS.

El siguiente código sí que me funciona en Firefox:

Syntax: [ Download ] [ Hide ]
Using javascript Syntax Highlighting
  1. function cambiardepar()
  2. {
  3.   var mysheet = document.styleSheets[0];                // Accedemos a la primera hoja de estilos CSS
  4.   for (i=0; i<mysheet.cssRules.length; i++) {           // Buscamos por todas sus reglas
  5.     if (mysheet.cssRules[i].selectorText == "#tienda"){ // Busca la regla que se llama "#tienda"
  6.       tienda_css = mysheet.cssRules[i];                 // Accedemos al objeto que guarda los estilos de '#tienda'
  7.       break;
  8.     }
  9.   }
  10.  
  11. alert("Altura: " + tienda_css.style.height);            // Del objeto, accedemos a la propiedad 'height'
  12. }
  13.  


Más información aquí y aquí.

Atención, que en Explorer se accede con rules[]. Mira el segundo enlace.

_________________
JF^D Perl programming


Nota 2011-09-13 07:31 @354

Perlero Nuevo
Registrado: 2011-09-12 17:49 @784
Mensajes: 3
Re: Función externa no hace lo que debería
Gracias explorer, pero no lo entiendo.
Height no es un estilo heredado de un elemento padre, está definido directamente como atributo de "tienda". Además, ¿por qué sí puedo acceder a cambiarle "display" y no a "height"??


Nota 2011-09-13 07:55 @371
Avatar de Usuario
Administrador
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España
Mensajes: 10250
Re: Función externa no hace lo que debería
Humm... pues, la verdad, no lo sé...

_________________
JF^D Perl programming


Responder al tema  [ 4 mensajes ] 

Reglas del Foro
No puedes abrir nuevos temas en este Foro
No puedes responder a temas en este Foro
No puedes editar tus mensajes en este Foro
No puedes borrar tus mensajes en este Foro
No puedes enviar adjuntos en este Foro

Publicidad

Socializa

Síguenos por Twitter

Suscríbete GRATUITAMENTE al Boletín de Perl en Español

Saltar a:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Traducción al español por Huan Manwë para phpbb-es.com
phpBB SEO