Foros del Web » Programando para Internet » Javascript »

Por que no funciona mi script? muestra y oculta div

Estas en el tema de Por que no funciona mi script? muestra y oculta div en el foro de Javascript en Foros del Web. Lo que hace es cambiar el titulo y el contenido de una caja llamada jBox, y si esta visible la oculta, si esta oculta la ...
  #1 (permalink)  
Antiguo 15/12/2010, 17:28
Avatar de Tecktonikrazy  
Fecha de Ingreso: enero-2010
Mensajes: 224
Antigüedad: 14 años, 10 meses
Puntos: 3
Pregunta Por que no funciona mi script? muestra y oculta div

Lo que hace es cambiar el titulo y el contenido de una caja llamada jBox, y si esta visible la oculta, si esta oculta la muestra al llamar a la funcion. Este es el codigo:

Código Javascript:
Ver original
  1. function jBox(title,content){
  2.  
  3.     var jB = document.getElementById('jBox');
  4.     var JTitle = document.getElementById('jB-title');
  5.     var JContent = document.getElementById('jB-content');
  6.    
  7.     if(jB.style.display == 'none') {jBoxOn()} else
  8.     if(jB.style.display == 'block') {jBoxOff()}
  9.    
  10.     function jBoxOn(){
  11.         jB.style.display = 'block';
  12.         JTitle.innerHTML = title;
  13.         Jcontent.innerHTML = content;
  14.         }
  15.    
  16.     function jBoxOff(){
  17.         jB.style.display = 'none';
  18.         JTitle.innerHTML = title;
  19.         Jcontent.innerHTML = content;
  20.     }
  21.    
  22. }

Código HTML:
<div id="jBox">
<a href="javascript:;" onclick="jBox('','')">Cerrar</a>
<span id="jB-title">Titulo</span>
<span id="jB-content">Contenido</span>
</div> 
__________________
I LOVE HTML (How To Make Love)
  #2 (permalink)  
Antiguo 15/12/2010, 20:08
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, 7 meses
Puntos: 1485
Respuesta: Por que no funciona mi script? muestra y oculta div

buenas...

fijate que ninguna de las dos condiciones if se cumple. es decir, estas leyendo una propiedad donde se asume que esta declarada directamente en el elemento. o sea, el objeto style representaria el atributo style, pero el elemento no tiene declarado ningun atributo style, de modo que display siempre te va devolver una cadena vacia. luego en el condicional estas comparando la cadena vacia vs un string literal el cual siempre te va devolver falso. ¿que puedes hacer? pues en lugar de comprobar si el campo es visible (block), comprueba si la propiedad display tiene valor.
Código:
element.style.display = !element.style.display? 'none': '';
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.

Última edición por zerokilled; 16/12/2010 a las 19:37 Razón: error ortografico
  #3 (permalink)  
Antiguo 16/12/2010, 09:30
Avatar de Tecktonikrazy  
Fecha de Ingreso: enero-2010
Mensajes: 224
Antigüedad: 14 años, 10 meses
Puntos: 3
Respuesta: Por que no funciona mi script? muestra y oculta div

Tienes razon, no se me ocurrio definir antes el display, gracias! Por otra parte no entiendo bien lo del codigo, si entiendo a que te refieres pero podrias explicarme porfavor para que sirve "!" y tambien "?" y ":" en !element.style.display? 'none': ''; ???
__________________
I LOVE HTML (How To Make Love)
  #4 (permalink)  
Antiguo 16/12/2010, 19:46
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, 7 meses
Puntos: 1485
Respuesta: Por que no funciona mi script? muestra y oculta div

son dos operadores. el primero, logical not o inverso logico (!), invierte un valor booleano. display no es un boolean, pero al realizar una operacion booleana javascript convierte el string a boolean. el segundo, operador ternario (?:) es una simplificacion del condicional if/else. el operador tiene el formato condicion ? expresion1: expresion2;. la expresion1 se evalua si la condicion es cierta y la expresion2 si es falso.
https://developer.mozilla.org/en/Jav...ecedence#Table

__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.

Etiquetas: muestra, oculta
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 00:17.