Foros del Web » Programando para Internet » Javascript »

Se puede repetir una funcion mientra presiono el mouse?

Estas en el tema de Se puede repetir una funcion mientra presiono el mouse? en el foro de Javascript en Foros del Web. Hola a todos Necestaria saber si es posible que una accion se repita mientras esta presionado. Esto es lo que yo tengo: un link que ...
  #1 (permalink)  
Antiguo 04/09/2007, 06:00
 
Fecha de Ingreso: diciembre-2005
Ubicación: Barcelona
Mensajes: 1.428
Antigüedad: 18 años, 4 meses
Puntos: 15
Se puede repetir una funcion mientra presiono el mouse?

Hola a todos

Necestaria saber si es posible que una accion se repita mientras esta presionado.

Esto es lo que yo tengo:
un link que ejecuta una funcion que hace que el valor (numerico) de un campo se incremente en 10

<a href="javascript:agrega10()">suma 10</a>

<input type="text" id="campo" value="0" size="10"/>


function agrega10()
{
document.getElementById(campo).value=document.getE lementById(campo).value + 10;
}


Esto funciona bien. Pero para que incremente en 10 tengo que hacer click.

??Como hago para MANTENIENDO APRETADO sobre el link se vaya incrementando de 10 en 10.??

Si supiera cual es el evento yo podria hacer el resto (algo como OnMousePressed...)
  #2 (permalink)  
Antiguo 04/09/2007, 07:11
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 2 meses
Puntos: 772
Re: Se puede repetir una funcion mientra presiono el mouse?

Hola chefnelone

A ver si esto te sirve:

Código:
<html>
<head>
<script type="text/javascript">
var tempo;
var suma = 0;
function sumar() {
  suma += 10;
  document.getElementById('algo').value = suma;
}
</script>
</head>
<body>
<a href="#" onmousedown = "tempo=setInterval('sumar()',500); return false"
onmouseup = "clearInterval(tempo)">Sumar</a>
<input type="text" id="algo" />
</body>
</html>
Saludos,
  #3 (permalink)  
Antiguo 04/09/2007, 07:28
 
Fecha de Ingreso: diciembre-2005
Ubicación: Barcelona
Mensajes: 1.428
Antigüedad: 18 años, 4 meses
Puntos: 15
Re: Se puede repetir una funcion mientra presiono el mouse?

un lujo.
gracias javier
  #4 (permalink)  
Antiguo 04/09/2007, 09:24
Avatar de derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 20 años, 6 meses
Puntos: 45
Re: Se puede repetir una funcion mientra presiono el mouse?

Hola:

Yo le añadiría el onmouseout por si nos salimos del enlace, ya que empieza a funcionar anómalamente si forzamos varios onmousedown sin que haya onmouseup:
Código PHP:
<html>
    <
head>
        <
script type="text/javascript">
            var 
tempo;
            var 
suma 0;
            function 
sumar() {
            
suma += 10;
            
document.getElementById('algo').value suma;
            }
        
</script>
    </head>
    <body>
        <a href="#" onmousedown = "tempo=setInterval('sumar()',500); return false"
           onmouseup = "clearInterval(tempo)" onmouseout="clearInterval(tempo)">Sumar</a>
        <input type="text" id="algo" value="0" />
    </body>
</html> 

Un saludo.
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.
  #5 (permalink)  
Antiguo 04/09/2007, 09:47
 
Fecha de Ingreso: diciembre-2005
Ubicación: Barcelona
Mensajes: 1.428
Antigüedad: 18 años, 4 meses
Puntos: 15
Re: Se puede repetir una funcion mientra presiono el mouse?

Se puede hacer algo para que si alguien hiciera SOLO UN CLICK click que tambien sume.


Un saludo
  #6 (permalink)  
Antiguo 04/09/2007, 09:59
Avatar de derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 20 años, 6 meses
Puntos: 45
Re: Se puede repetir una funcion mientra presiono el mouse?

Hola chefnelone:

Es lo malo del setInterval(), que la primera llamada la hace con la espera de tiempo estipulado (lo malo, o lo bueno en algunos casos).

Menos mal que de ésta manera se puede solventar, y si se hubiera hecho que no hubiese delay en la primera llamada, sería un lío forzar lo contrario:

Código PHP:
<html>
    <
head>
        <
script type="text/javascript">
            var 
tempo;
            var 
suma 0;
            function 
sumar() {
            
suma += 10;
            
document.getElementById('algo').value suma;
            }
        
</script>
    </head>
    <body>
        <a href="#" onmousedown = "sumar(); tempo=setInterval('sumar()',200); return false"
           onmouseup = "clearInterval(tempo)" onmouseout="clearInterval(tempo)">Sumar</a>
        <input type="text" id="algo" value="0" />
    </body>
</html> 
Realmente me ha gustado esta manera de manejar cantidades, muy útil con cuatro cosas.



Un saludo.
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.
  #7 (permalink)  
Antiguo 04/09/2007, 11:35
 
Fecha de Ingreso: diciembre-2005
Ubicación: Barcelona
Mensajes: 1.428
Antigüedad: 18 años, 4 meses
Puntos: 15
Re: Se puede repetir una funcion mientra presiono el mouse?



gracias . saludos
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 14:59.