I've tried to add two event listeners into my external script, both of which worked fine as event attributes attached to HTML elements.
The event listeners are:
parent.addEventListener("mousemove", where(event));
parent.addEventListener("mouseleave", reset(event));
The rest of the code can be seen here: https://codepen.io/rowancavanagh/pen/NBmPGv Or here in the snippet:
window.onload = function() {
 var parent = document.querySelectorAll(".shadowed");
 var shadow = document.createElement("div");
 for (var i = 0; i < parent.length; i++) {
   parent[i].appendChild(shadow);
 }
 parent.addEventListener("mousemove", where(event));
 parent.addEventListener("mouseleave", reset(event));
}
function where(e) {
 var x = e.offsetX / e.target.offsetWidth * 10 - 5;
 var y = e.offsetY / e.target.offsetHeight * 10 - 5;
 e.target.querySelector('.shadowed div').style.transform = 'translateX(' + x + 'px) translateY(' + y + 'px)';
}
function reset(e) {
 e.target.querySelector('.shadowed div').style.transform = 'translateX(0px) translateY(0px)';
}* {
 margin: 0;
 padding: 0;
 box-sizing: border-box;
}
html, body {
 height: 100%;
}
body {
 background-color: #eee;
 display: flex;
 justify-content: center;
 align-items: center;
}
.shadowed {
 position: relative;
 width: 400px;
 height: 240px;
 margin: 10px;
 background-color: #fff;
 border-radius: 5px;
}
.shadowed div {
 position: absolute;
 bottom: 0;
 right: 0;
 margin: 0 -10px -10px 0;
 width: calc(100% - 40px);
 height: calc(100% - 40px);
 background-color: #ddd;
 border-radius: 5px;
 z-index: -1;
 transform: translateY(0px) translateX(0px);
 transition: transform .1s ease-out;
}<div class="shadowed"></div>As you can see, they should be firing a couple of functions on mousemove and mouseleave, but aren't.
Any ideas what I'm doing wrong?
 
     
     
     
     
    