Ver Mensaje Individual
  #12 (permalink)  
Antiguo 07/10/2005, 10:02
kepawe
 
Fecha de Ingreso: agosto-2004
Mensajes: 157
Antigüedad: 20 años, 5 meses
Puntos: 5
Hola el_javi, tunait y flaviovich.

Estoy totalmente de acuerdo con tunait, es mas sencillo utilizar funciones literales, si prefieres utilizar attachEvent y addEventListener, también deberás utilizar detachEvent y removeEventListener, ya que una vez asignado una función a un evento debes ante eliminar el evento para asignarle otra función.

Te envío un ejemplo para que veas que es más laborioso.

Código PHP:
<html>
<
head>
<
title>Manejadores de eventos</title>
</
head>
<
body>
<
form name="form1" id="form1" style="display:none;">BUSCADOR<br>
<
input type="text" size="50">
</
form>
<
div id="test">ABRIR</div>
<
script language="JavaScript" type="text/javascript">
<!--

//-------------- Funciones de eventos  ---------------------

function addEvent(objevTypefnuseCapture){
    if (
obj.addEventListener){
      
obj.addEventListener(evTypefnuseCapture);
      return 
true;
    } else if (
obj.attachEvent){
      var 
obj.attachEvent("on"+evTypefn);
      return 
r;
    } else {
      
alert("Handler could not be attached");
    }
}

function 
removeEvent(objevTypefnuseCapture){
    if (
obj.removeEventListener){
      
obj.removeEventListener(evTypefnuseCapture);
      return 
true;
    } else if (
obj.detachEvent){
      var 
obj.detachEvent("on"+evTypefn);
      return 
r;
    } else {
      
alert("Handler could not be removed");
    }
}
//-------------------------------------------------------

var handler_obj document.getElementById("form1");
// funciones que enviamos como argumento a addEvent
// las guardamos en las variables func_open y func_close
var func_open = (function(event){
 if(
event.target){event.stopPropagation()}
 else if(
event.srcElement){event.returnValue false;}
 
abrir(event,handler_obj);})
 
var 
func_close = (function(event){
 if(
event.target){event.stopPropagation()}
 else if(
event.srcElement){event.returnValue false;}
 
cerrar(event,handler_obj);}) 

function 
abrir(e,obj){
   var 
objeto_buscador e.target e.target e.srcElement ;
   
objeto_buscador.innerHTML "CERRAR";
   
obj.style.display "inline";
   
removeEvent(objeto_buscador ,"click",func_open ,false);
   
addEvent(objeto_buscador ,"click",func_close,false);
}
function 
cerrar(e,obj){
   var 
objeto_buscador e.target e.target e.srcElement ;
   
objeto_buscador.innerHTML "ABRIR";
   
obj.style.display "none";
   
removeEvent(objeto_buscador,"click",func_close,false);
   
addEvent(objeto_buscador,"click",func_open,false);
}

addEvent(document.getElementById("test"),"click",func_open,false);

//-->
</script>

</body>
</html> 

Saludos