Example 1 — Log mouseover / mouseout
MDN-style log: which element you entered and which you left.
function label(node) {
return node ? (node.id || node.tagName) : "null";
}
function onOver(e) {
console.log("into", label(e.target), "from", label(e.relatedTarget));
}
function onOut(e) {
console.log("from", label(e.target), "into", label(e.relatedTarget));
}
red.addEventListener("mouseover", onOver);
red.addEventListener("mouseout", onOut);
blue.addEventListener("mouseover", onOver);
blue.addEventListener("mouseout", onOut); How It Works
- Label safely. If
relatedTargetisnull, print"null". - On over.
targetis entered;relatedTargetis exited. - On out. Roles swap —
targetis exited;relatedTargetis entered. - Move between nodes to see both sides of the transition.

