Ver Mensaje Individual
  #11 (permalink)  
Antiguo 12/11/2016, 16:13
Avatar de Alexis88
Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Poner variable donde no la hay

Cita:
Iniciado por JUMASOL Ver Mensaje
Esto me funciona en todo menos en IE8:

Código:
if (document.addEventListener) {                
document.querySelector('#elinput').addEventListener('change', function() {elonchage(this)}, false);
} else if (document.attachEvent) {     
document.querySelector('#elinput').attachEvent('change', function() {elonchage(this)}, false);        
}
El método .attachEvent() no requiere de un tercer argumento para determinar si se saltará o no la fase de captura; además, el nombre del evento debe tener un "on" al inicio:
Código Javascript:
Ver original
  1. document.querySelector('#elinput').attachEvent("onchange", elonchage);

Por cierto, en el caso de usar solo el método .addEventListener(), estableciendo el nombre de la función como segundo argumento (listener o callback), no es necesario pasarle el this como argumento ya que, el elemento en el cual se registró el evento (document.querySelector('#elinput')), puede ser accedido a través de dicha palabra reservada en el contexto de la función:
Código Javascript:
Ver original
  1. document.querySelector('#elinput').addEventListener("change", elonchage, false);
  2.  
  3. function elonchage(){
  4.     console.log(this); //document.querySelector('#elinput')
  5. }

Por cierto, se recomienda usar solo el método .addEventListener() ya que es más completo, en cuanto a las características que posee, sobre los métodos antecesores; además de contar con soporte por parte de la mayoría de navegadores modernos. Para evitar problemas de incompatibilidad con navegadores antiguos, puedes implementar este polyfill.

__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand

Última edición por Alexis88; 12/11/2016 a las 16:28 Razón: Event name