Foros del Web » Programando para Internet » Javascript »

Desactivar accion asociada a evento

Estas en el tema de Desactivar accion asociada a evento en el foro de Javascript en Foros del Web. Muy buenas, estoy un poco desesperado con un problema al que no encuentro solucion. La cuestion es que a un td le tengo asociado un ...
  #1 (permalink)  
Antiguo 25/04/2005, 10:20
 
Fecha de Ingreso: diciembre-2003
Mensajes: 213
Antigüedad: 20 años, 5 meses
Puntos: 0
Desactivar accion asociada a evento

Muy buenas, estoy un poco desesperado con un problema al que no encuentro solucion.

La cuestion es que a un td le tengo asociado un evento onMouseOver, hasta aqui todo bien, pero el problema es que quiero poder desactivar este evento en un momento dado, algo asi como:

document.getElementById("identificador_del_td").On MouseOver=null;

Pero esto no me funciona, y no se como hacerlo.

Ademas de desactivarlo, tambien me gustiria poder activarlo, vamos, poder hacer:

document.getElementById("identificador_del_td").On MouseOver="funcion a asociar al evento";

Pero esto tampoco me funciona claro.

Por favor, de verdad que llevo un dia entero perdido con esto y ya me duele la cabeza y estoy harto, echadme una mano.
  #2 (permalink)  
Antiguo 25/04/2005, 18:44
 
Fecha de Ingreso: agosto-2004
Mensajes: 157
Antigüedad: 19 años, 8 meses
Puntos: 5
Hola kurlax

He estado mirando en google y he encontrado este enlace , pero no he conseguido eliminar el evento, de todos modo lo pongo para que le heches un vistazo.

He optado por una forma menos ortodoxa, pero parece funcionar, basicamente para "eliminar" el evento, asigno new Function("return false;") al evento.

Te pongo un ejemplo para que te hagas una idea y lo puedas estudiar, si tienes alguna duda, por aquí andaré.

Código:
<html>
<head>
<title></title>
</head>
<body>

<div id="bsg" style="border:1px solid black;">Evento click activado</div><br>
<span id="on" style="border:1px solid black;">Haz click aquí para activar el evento de la capa superior</span>
<br><br>Haz click fuera de las capas para desactivar el evento
<script language=JavaScript type=text/javascript>
<!--


function display(e,obj){
		alert(obj.id)
		//evitamos que el evento se propague
		if(e.target) e.stopPropagation()
		else { e.cancelBubble = true;
		}
				
				
}
function defuse_event(e){
		if(e.target) e.stopPropagation()
		else { e.cancelBubble = true;
		}
		document.getElementById("bsg").innerHTML = "Evento click desactivado";
		// "Eliminamos" el evento
		document.getElementById("bsg").onclick = new Function("return false;");
}
function activate(e){
		if(e.target) e.stopPropagation()
		else { e.cancelBubble = true;
		}
		document.getElementById("bsg").innerHTML = "Evento click activado";
		
		if(window.Event){
		document.getElementById("bsg").onclick = function(event){display(event,this)}
		}
		else{
		document.getElementById("bsg").onclick = function(){display(event,this)}
		}
}
	
if(window.Event){
  document.getElementById("bsg").onclick = function(event){display(event,this)}
  document.getElementById("on").onclick = function(event){activate(event)}
  document.onclick = function(event){defuse_event(event)}
}
else{
  document.getElementById("bsg").onclick = function(){display(event,this)}
  document.getElementById("on").onclick = function(){activate(event)}
  document.onclick = function(){defuse_event(event)}
}
//-->
</script>
</body>
</html>
Espero que esto te ayude a tener un día mejor que el de ayer.

Un saludo
  #3 (permalink)  
Antiguo 25/04/2005, 18:52
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 19 años, 1 mes
Puntos: 2
Hola

Por que no jugar directamente con una variable, algo como:

Cita:
<script>
var activo = 1;
function onmouseoverFuncion()
{
if (activo = 1)
// realizar todo para este caso
else
// no realizar nada
}

</script>

<td onMouseOver="javascript:onmouseoverFuncion();">
Asi trabajas solamente apagando y prendiendo la funcion con la variable, lo cual es mucho mas sencillo, estandar y limpio en el codigo.

Suerte!!
  #4 (permalink)  
Antiguo 26/04/2005, 01:12
 
Fecha de Ingreso: diciembre-2003
Mensajes: 213
Antigüedad: 20 años, 5 meses
Puntos: 0
Muchas gracias a los dos, la verdad es que las dosposibilidades son interesantes, pero dadas mis evidentes limitaciones con el JavaScript de momento voy a optar por una solucion parecida a la que comentaba Neuron, que la he comprendido mejor.

Pero lo dicho, muchas gracias a ambos.
  #5 (permalink)  
Antiguo 26/04/2005, 03:41
 
Fecha de Ingreso: agosto-2004
Mensajes: 157
Antigüedad: 19 años, 8 meses
Puntos: 5
Buena opción, no puedo más que darle la razón a Neuron_376 , como suelen decir los arboles no me han dejado ver el bosque o algo así .

Saludos
  #6 (permalink)  
Antiguo 26/04/2005, 05:53
 
Fecha de Ingreso: diciembre-2003
Mensajes: 213
Antigüedad: 20 años, 5 meses
Puntos: 0
La verdad es que a veces, en esto de la programacion, nos complicamos la vida y parece que lo queremos hacer todo mas complicado de lo que es, de echo me habia encabezonado completamente en que se podrian desactivar las acciones con algun metodo misterioso que yo desconocia, y ya ves... no merecia la pena en absoluto.
  #7 (permalink)  
Antiguo 27/04/2005, 18:12
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 19 años, 1 mes
Puntos: 2
Asi es...

Hay que intentar primero lo mas basico posible, y ya despues meterse con cosas mas complicadas...

Suerte!!
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 10:26.