Recordemos que el evento mousedown se dispara cuando presionamos alguno de los botones del mouse y el evento mouseup cuando dejamos de presionar el botón.
Resolveremos el mismo problema que habíamos realizado con el modelo antiguo de captura de eventos.
Implementemos una página que contenga una tabla con una fila y dos columna, al presionar el botón del mouse dentro de una casilla de la tabla cambiar el color de fondo de la misma por amarillo y cuando levantamos el dedo del mouse regresar a color blanco la casilla.
<!DOCTYPE html> <html> <head> <title>Problema</title> <script > window.addEventListener('load',inicializarEventos,false); function inicializarEventos(e) { var r1=document.getElementById('recu1'); r1.addEventListener('mousedown',presionar,false); r1.addEventListener('mouseup',soltar,false); var r2=document.getElementById('recu2'); r2.addEventListener('mousedown',presionar,false); r2.addEventListener('mouseup',soltar,false); } function presionar(e) { var objeto=e.target; objeto.style.backgroundColor='#ffff00'; } function soltar(e) { var objeto=e.target; objeto.style.backgroundColor='#ffffff'; } </script> </head> <body> <table border="1"> <tr> <td id="recu1">Recuadro 1</td><td id="recu2">Recuadro 2</td> </tr> </table> </body> </html>
El código javascript es:
window.addEventListener('load',inicializarEventos,false); function inicializarEventos(e) { var r1=document.getElementById('recu1'); r1.addEventListener('mousedown',presionar,false); r1.addEventListener('mouseup',soltar,false); var r2=document.getElementById('recu2'); r2.addEventListener('mousedown',presionar,false); r2.addEventListener('mouseup',soltar,false); } function presionar(e) { var objeto=e.target; objeto.style.backgroundColor='#ffff00'; } function soltar(e) { var objeto=e.target; objeto.style.backgroundColor='#ffffff'; }En la función inicializarEventos obtenemos la referencia a cada celda de la tabla y le asignamos los dos eventos:
var r1=document.getElementById('recu1'); r1.addEventListener('mousedown',presionar,false); r1.addEventListener('mouseup',soltar,false);