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.