Foros del Web » Programando para Internet » Javascript »

Fusionar dos funciones.

Estas en el tema de Fusionar dos funciones. en el foro de Javascript en Foros del Web. Hola a todos, He estado probando sin exito, y espero que alguien me ayuda un pco. Tengo script de mas abajo que funciona correctamente, Pero ...
  #1 (permalink)  
Antiguo 23/04/2008, 20:27
Avatar de catal  
Fecha de Ingreso: julio-2004
Ubicación: BCN
Mensajes: 199
Antigüedad: 19 años, 9 meses
Puntos: 0
Mensaje Fusionar dos funciones.

Hola a todos,

He estado probando sin exito, y espero que alguien me ayuda un pco.
Tengo script de mas abajo que funciona correctamente, Pero me interesaria que el ondblclick , no fuera con el boton izquierdo del mouse, que fuera un ondblclick del derecho.

Código HTML:
<!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=iso-8859-1" />
<title>Documento sin t&iacute;tulo</title>
<script language="javascript">
function cogerDato(celda)
{
     destino = document.getElementById("instancia");
     destino.value = celda.innerHTML;
} 
</script>
</head>

<body>
<table width="50%" border="1" align="center">
  <tr><td id="hola" ondblclick="cogerDato(this)">HOLA</td><td id="tardes" ondblclick="cogerDato(this)">TARDES</td><td id="noches" ondblclick="cogerDato(this)">NOCHES</td></tr>
  <tr><td id="buenos" ondblclick="cogerDato(this)">BUENOS</td><td id="dias" ondblclick="cogerDato(this)">DIAS</td><td id="semanas" ondblclick="cogerDato(this)">SEMANAS</td></tr>
  <tr><td id="adios" ondblclick="cogerDato(this)">ADIOS</td><td id="meses" ondblclick="cogerDato(this)">MESES</td><td id="años" ondblclick="cogerDato(this)">A&Ntilde;OS</td></tr>
</table>
<form id="form1" name="form1" method="post" action="">
  <div align="center">
  <input id="instancia" name="instancia" type="text" value="" size="8" maxlength="8"/>
  <input type="submit" name="Submit" value="UPDATE" />
  </div>
</form>
<p>&nbsp;</p>
</body>
</html> 
buscando por aqui en el foro, he encontrado esto,

Código HTML:
function boton(e) {
    if(e.button==1) return true
    if(e.button==2)
        alert('botón derecho pulsado');
}
Se podria cambiar el alert, para que haga lo mismo con la funcion cogerDato() ?????
Ho hay alguna otra manera para el boton izquierdo haga la funcion cogerD..... ?

Gracias.
__________________
Vive de manera que puedas mirar fijamente a los ojos de cualquiera y mandarlo al diablo.
-- Mencken, Henry-Louis --
  #2 (permalink)  
Antiguo 24/04/2008, 01:28
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Re: Fusionar dos funciones.

Desconocia la posibilidad de usar el boton derecho del mouse pero si salta el alert por logica esto tambien tiene que funcionar...

Código:
function boton(e) {
    if(e.button==1) {
  //Codigo que se ejecutara si es el boton izquierdo

   }
    if(e.button==2){
  //Codigo que se ejecutara si es el derecho

   }
}
Y podrias poner cualquier codigo, llamadas a funciones etc para cada boton...

(repito si tu codigo inicial con el alert funciona, alert es una funcion como cualquier otra)

Estas seguro que con e.button se referian a los botones del mouse? Como definian "e"?


Quim
  #3 (permalink)  
Antiguo 24/04/2008, 07:18
Avatar de catal  
Fecha de Ingreso: julio-2004
Ubicación: BCN
Mensajes: 199
Antigüedad: 19 años, 9 meses
Puntos: 0
Re: Fusionar dos funciones.

De funcionar , funciona. (te dejo la muestra.)

Código HTML:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
  <title></title>
  <meta name="GENERATOR" content="Quanta Plus">
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8"><script language="JavaScript">
function boton(e) {
    if(e.button==1) 
	alert('botón izquierdo pulsado');
    if(e.button==2)
        alert('botón derecho pulsado');
}
</script>
</head>
<body>
<a href="tupagina.html" onmousedown="return boton(event)">Enlace</a>
</body>
</html> 
Per sigo con la duda, si donde dices que ponga el codigo (cambiando el alert()) coloco la funcion no funciona..... help . (solo he cambiado la primera celda)

Código HTML:
<!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=iso-8859-1" />
<title>Documento sin t&iacute;tulo</title>
<script language="javascript">

function boton(e) {
    if(e.button==1) 
	alert('botón izquierdo pulsado');
    if(e.button==2){
		function cogerDato(celda){
     		destino = document.getElementById("instancia");
     		destino.value = celda.innerHTML;
		} 
}


</script>
</head>

<body>
<table width="50%" border="1" align="center">
  <tr><td id="hola" onmousedown="return boton(event)">HOLA</td><td id="tardes" ondblclick="cogerDato(this)">TARDES</td><td id="noches" ondblclick="cogerDato(this)">NOCHES</td></tr>
  <tr><td id="buenos" ondblclick="cogerDato(this)">BUENOS</td><td id="dias" ondblclick="cogerDato(this)">DIAS</td><td id="semanas" ondblclick="cogerDato(this)">SEMANAS</td></tr>
  <tr><td id="adios" ondblclick="cogerDato(this)">ADIOS</td><td id="meses" ondblclick="cogerDato(this)">MESES</td><td id="años" ondblclick="cogerDato(this)">A&Ntilde;OS</td></tr>
</table>
<form id="form1" name="form1" method="post" action="">
  <div align="center">
  <input id="instancia" name="instancia" type="text" value="" size="8" maxlength="8"/>
  <input type="submit" name="Submit" value="UPDATE" />
  </div>
</form>
<p>&nbsp;</p>
</body>
</html> 
__________________
Vive de manera que puedas mirar fijamente a los ojos de cualquiera y mandarlo al diablo.
-- Mencken, Henry-Louis --
  #4 (permalink)  
Antiguo 24/04/2008, 07:45
 
Fecha de Ingreso: diciembre-2007
Ubicación: Barcelona
Mensajes: 289
Antigüedad: 16 años, 4 meses
Puntos: 8
Re: Fusionar dos funciones.

Hola,

Es que estás definiendo la función dentro de otra función. A parte de que no se si te va a funcionar, yo creo que tendrias que poner lo que te ha dicho quimfv pero con la función cogerDato fuera:

Código PHP:

function cogerDato(celda){
             
destino document.getElementById("instancia");
             
destino.value celda.innerHTML;
        }
function 
boton(e) {
    if(
e.button==1) {
  
//Codigo que se ejecutara si es el boton izquierdo

   
}
    if(
e.button==2){
  
//Codigo que se ejecutara si es el derecho

   
}

Piensa que al hacer eso, tienes que llamar la función boton en algun sitio, y creo que también tendrias que cambiar esto:

ondblclick="cogerDato(this)"
  #5 (permalink)  
Antiguo 24/04/2008, 08:02
Avatar de catal  
Fecha de Ingreso: julio-2004
Ubicación: BCN
Mensajes: 199
Antigüedad: 19 años, 9 meses
Puntos: 0
Re: Fusionar dos funciones.

Pero no podria ser algo parecido a esto? (Perdonar mi ignorancia)

Código:
function boton(e) {
    if(e.button==1) {
  //Codigo que se ejecutara si es el boton izquierdo

   }
    if(e.button==2){
            destino = document.getElementById("instancia");
            destino.value = celda.innerHTML;

   }
}
Y por lo que me dices, no puedes definir una funcion dentro de otra no?
Y llamar dos funciones a la vez, como seria?

Código:
onmousedown="return boton(event); cogerDatos(this);"
__________________
Vive de manera que puedas mirar fijamente a los ojos de cualquiera y mandarlo al diablo.
-- Mencken, Henry-Louis --
  #6 (permalink)  
Antiguo 24/04/2008, 09:00
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Re: Fusionar dos funciones.

Código HTML:
<!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=iso-8859-1" />
<title>Documento sin t&iacute;tulo</title>
<script language="javascript">
function cogerDato(celda)
{
     destino = document.getElementById("instancia");
     destino.value = celda.innerHTML;
} 

function boton(e,celda) {
    if(e.button==1){
     //aqui codigo alternativo para el boton izquierdo
	 alert("izquierda");
    }
    if(e.button==2){
    //aqui codigo alternativo para el boton derecho
	alert("derecha");
        cogerDato(celda);
		}
}

</script>
</head>
<body>
<table width="50%" border="1" align="center">
  <tr>
    <td id="hola" onclick="boton(event,this)">HOLA</td>
    <td id="tardes" onmousedown="boton(event,this)">TARDES</td>
    <td id="noches" ondblclick="boton(event,this)">NOCHES</td>
  </tr>
  <tr>
    <td id="buenos" onclick="boton(event,this)">BUENOS</td>
    <td id="dias" onmousedown="boton(event,this)">DIAS</td>
    <td id="semanas" ondblclick="boton(event,this)">SEMANAS</td>
  </tr>
  <tr>
    <td id="adios" onclick="boton(event,this)">ADIOS</td>
    <td id="meses" onmousedown="boton(event,this)">MESES</td>
    <td id="años" ondblclick="boton(event,this)">A&Ntilde;OS</td>
  </tr>
</table>
<form id="form1" name="form1" method="post" action="">
  <div align="center">
    <input id="instancia" name="instancia" type="text" value="" size="8" maxlength="8"/>
    <input type="submit" name="Submit" value="UPDATE" />
  </div>
</form>
<p>&nbsp;</p>
</body>
</html> 
Asi funciona pero fijate que solo funciona con el onmousedown, en la columna del medio, la primera tiene onclick y la ultima ondblclick.

He encontrado algo al respecto Left vs. Right Button aqui efectivamente te dicen que solo funciona con el onmousedown, y ademas te dicen que hay diferencias entre navegadores, tienes una solución para Netscape y IE (no se si funciona).

En cuanto a llamar funciones fijate en lo que he hecho como queria llamar la funcion cogerDato(celda) que espera una celda pero lo iva a hacer desde dentro de otra funcion boton(e) que espera un evento, he agregado el parametro que espera cogerdato() para poder pasar se lo en el momento que lo he necesitado.

Creo que tendrias que coger un manual de javascript para situarte un poco. Las faq de esta casa igual te sirven.


Quim
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 16:20.