Cita:
Iniciado por JUMASOL
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 originaldocument.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 originaldocument.querySelector('#elinput').addEventListener("change", elonchage, false);
function elonchage(){
console.log(this); //document.querySelector('#elinput')
}
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.