Practice listening for and handling JavaScript DOM Events
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
stoplight-event-exercise/index.js

81 lines
2.1 KiB

8 years ago
(function() {
'use strict';
const stopButton = document.querySelector('#stopButton');
const slowButton = document.querySelector('#slowButton');
const goButton = document.querySelector('#goButton');
const stopLight = document.querySelector('#stopLight');
const slowLight = document.querySelector('#slowLight');
const goLight = document.querySelector('#goLight');
// part 1
8 years ago
stopButton.addEventListener('click', () => {
stopLight.classList.toggle('stop');
// or...
// if (stopLight.classList.contains('stop')) {
// stopLight.classList.remove('stop');
// }
// else {
// stopLight.classList.add('stop');
// }
8 years ago
});
slowButton.addEventListener('click', () => {
slowLight.classList.toggle('slow');
});
goButton.addEventListener('click', () => {
goLight.classList.toggle('go');
});
// part 2
const handleMouseEnter = (event) => {
8 years ago
console.log(`Entered ${event.target.textContent} button`);
};
8 years ago
const handleMouseLeave = (event) => {
8 years ago
console.log(`Left ${event.target.textContent} button`);
};
8 years ago
stopButton.addEventListener('mouseenter', handleMouseEnter);
slowButton.addEventListener('mouseenter', handleMouseEnter);
goButton.addEventListener('mouseenter', handleMouseEnter);
8 years ago
stopButton.addEventListener('mouseleave', handleMouseLeave);
slowButton.addEventListener('mouseleave', handleMouseLeave);
goButton.addEventListener('mouseleave', handleMouseLeave);
8 years ago
// bonus
const controls = document.querySelector('#controls');
8 years ago
controls.addEventListener('click', (event) => {
if (event.target === controls) {
return;
}
let status;
if (event.target === stopButton) {
status = stopLight.classList.contains('stop') ? 'on' : 'off';
// or...
// if (stopLight.classList.contains('stop')) {
// status = 'on';
// }
// else {
// status = 'off';
// }
8 years ago
}
else if (event.target === slowButton) {
status = slowLight.classList.contains('slow') ? 'on' : 'off';
8 years ago
}
else {
status = goLight.classList.contains('go') ? 'on' : 'off';
8 years ago
}
console.log(`${event.target.textContent} bulb ${status}`);
});
})();