Foros del Web » Programando para Internet » Javascript »

¿Onclick con doble función?

Estas en el tema de ¿Onclick con doble función? en el foro de Javascript en Foros del Web. Hola, el siguiente código: onclick="document.getElementById('contenido').styl e.right='-150px';" hecha hacia un lado el contenido general y deja ver un menu lateral que se encuentra debajo de dicho ...
  #1 (permalink)  
Antiguo 24/09/2014, 06:21
Avatar de AngelMarine  
Fecha de Ingreso: enero-2014
Ubicación: Madrid
Mensajes: 79
Antigüedad: 10 años, 3 meses
Puntos: 0
Pregunta ¿Onclick con doble función?

Hola, el siguiente código: onclick="document.getElementById('contenido').styl e.right='-150px';" hecha hacia un lado el contenido general y deja ver un menu lateral que se encuentra debajo de dicho contenido.

Como verán es un script muy sencillo, lo único que hace es desplazar el div contenedor - (menos) 150 píxeles a la derecha y aparece otro div con menor z-index debajo.

Bueno, el problema está en que al dar click en el botón con la función onclick ocurre el suceso, pero........ ¿¿¿y luego para volver a su posición original???.

Se me ocurre esto, sin embargo, aún no anda:

<div id="contenido" onclick="mostrarMenu(this)">
<div>...</div>
</div>


<script language="javaScript">

function mostrarMenu(objeto){
document.getElementById('contenido').style.right='-150px';
objeto.onclick = function(){esconderMenu(objeto)};
}

function esconderMenu(objeto){
document.getElementById('contenido').style.right=' 0px';
objeto.onclick = function(){mostrarMenu(objeto)};
}
</script>

Última edición por AngelMarine; 24/09/2014 a las 06:38
  #2 (permalink)  
Antiguo 24/09/2014, 07:05
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: ¿Onclick con doble función?

Mira si te sirve esto

Código Javascript:
Ver original
  1. var posicion=document.getElementById('contenido').style.right;
  2. function mostrarEsconderMenu(){
  3.     if(posicion==' 0px'){
  4.         document.getElementById('contenido').style.right='-150px';
  5.     }else{
  6.         document.getElementById('contenido').style.right=' 0px';
  7.     }
  8.     posicion=document.getElementById('contenido').style.right;
  9. }

var posicion=document.getElementById('contenido').styl e.right;

debería estar despues de 'contenido'
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #3 (permalink)  
Antiguo 24/09/2014, 07:52
Avatar de CHuLoSoY  
Fecha de Ingreso: febrero-2002
Ubicación: Ribeira (Galicia)
Mensajes: 1.900
Antigüedad: 22 años, 2 meses
Puntos: 29
Respuesta: ¿Onclick con doble función?

Te cunde una condición como la que dice quimfv o utilizar jquery, que con una función lo hace él solo.

Saludos.
__________________
ESQUIO Dominios y Hosting
Las mejores características con los mejores precios.
  #4 (permalink)  
Antiguo 24/09/2014, 10:14
Avatar de America|UNK  
Fecha de Ingreso: noviembre-2006
Ubicación: Piura - Perú
Mensajes: 582
Antigüedad: 17 años, 5 meses
Puntos: 56
Respuesta: ¿Onclick con doble función?

Algo más optimizado:

Código Javascript:
Ver original
  1. document.getElementById("contenido").onclick = function(){
  2.         this.style.right = (getComputedStyle(this).getPropertyValue("right").match(/^0/) ? -150 : 0) + "px";
  3. }

Demo: http://jsfiddle.net/wZVanG/jep3msb7/

Por qué getComputedStyle?: this.style.right te mostrará undefined si el elemento HTML no tiene ningún estilo asignado por el atributo style=""

Con jQuery puedes reducir aún más.
__________________
/* El que atiende, entiende..., el que entiende, aprende!.
Desarrollo Web Freelance, Contactar */
  #5 (permalink)  
Antiguo 24/09/2014, 12:21
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: ¿Onclick con doble función?

Y dado a que la propiedad getComputedStyle tiene soporte en IE solo a partir de la versión 9, adáptalo con la propiedad currentStyle para que también funcione en versiones anteriores.

Código Javascript:
Ver original
  1. if (window.getComputedStyle){
  2.     this.style.right = (!parseInt(getComputedStyle(this).right) ? -150 : 0) + "px";
  3. }
  4. else{
  5.     this.style.right = (!parseInt(this.currentStyle.right) ? -150 : 0) + "px";
  6. }

A diferencia del ejemplo de mi paisano America|UNK, tomo la parte entera de la propiedad (dada con el símbolo de píxeles) y si es falsa (que equivale a que sea igual a cero), le asigno los -150 píxeles, caso contrario, cero.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand

Etiquetas: javascript+html
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 07:40.