Ver Mensaje Individual
  #2 (permalink)  
Antiguo 22/08/2010, 05:07
Avatar de Panino5001
Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años, 8 meses
Puntos: 834
Respuesta: Problema con "this" en IE

Tenés algunas cosas mal, aparte de lo que mencionás. Cuando usás los eventos como método (ejemplo, lo que usás en window.onload) el intérprete espera una referencia a una función a ejecutar. Es decir, espera o bien un nombre de función sin paréntesis o una función anónima. Vos usaste una instrucción y eso está mal.
Lo otro, lo que mencionás de this y explorer, es así cómo se maneja explorer. Para explorer ese this, usado en ese contexto, apunta al objeto window y no al objeto sobre el cual se produce el evento. Hay varias maneras de solucionarlo. Te dejo un ejemplo:
Código PHP:
<!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&#237;tulo</title>
<script>
function 
addEvent(obj,fun,type){ 
    if(
obj.addEventListener){ 
        
obj.addEventListener(type,fun,false); 
    }else if(
obj.attachEvent){ 
        var 
f=function(){ 
            
fun.call(obj,window.event); 
        } 
        
obj.attachEvent('on'+type,f); 
        
obj[fun.toString()+type]=f
    }else{ 
        
obj['on'+type]=fun
    } 
}  
function 
prueba() {
    var 
texto this.value;
    
alert(texto);
}
window.onload =function(){addEvent(document.getElementsByTagName("input")[0],prueba,'keyup');};
</script>
</head>

<body>
<form id="form1" name="form1" method="post" action="">
  <input name="textfield" type="text" id="textfield" value="hola" />
</form>
</body>
</html>