Quiero desplazarme sobre un div y usar su atributo de datos único para cambiar el src de un img en otro lugar de la página. Entonces revisa la lista y la URL cambia según el div sobre el que se cierne. Mi enfoque hasta ahora fue agregar un evento de mouseover a todos los elementos de mi lista y activar una función cada vez que obtendrá el atributo de datos del elemento actual sobre el que se pasa el mouse. Pero no funciona y tengo la sensación de que me estoy acercando a esto desde el ángulo equivocado. Soy consciente de que esto se resuelve fácilmente usando unas pocas líneas de jquery, pero me gustaría no usarlo, ya que lo necesitaría únicamente para esto. Hay una manera de hacer esto en javascript simple y antiguo, ¿verdad?
const workThumb = document.querySelectorAll('#work-thumb'); const works = document.querySelectorAll('.work-list').forEach(item => { item.addEventListener('mouseover', event => { var src = this.getAttribute('data-thumb'); workThumb.setAttribute("src", url); }) }) <a class="work-list" data-thumb="http://url.to/test.jpg"> <a class="work-list" data-thumb="http://url.to/test.jpg"> <a class="work-list" data-thumb="http://url.to/test.jpg"> [...] <img id="work-thumb" src="test.jpg">use querySelector (no querySelectorAll ):
ejemplo de trabajo...
const workThumb = document.querySelector('#work-thumb') document.querySelectorAll('.work-list').forEach( item => { item.onmouseover = () => workThumb.src = item.dataset.thumb }) a { display : block; margin : .3em; cursor : pointer; } <a class="work-list" data-thumb="https://via.placeholder.com/150x100/ff0000">ITEM-1</a> <a class="work-list" data-thumb="https://via.placeholder.com/150x100/00ff00">ITEM-2</a> <a class="work-list" data-thumb="https://via.placeholder.com/150x100/0000ff">ITEM-3</a> <img id="work-thumb" src="https://via.placeholder.com/150/" alt="">Limpié tu código y aquí tienes un ejemplo de trabajo. Las etiquetas <a> se usan para enlaces, no para elementos de lista, use <ul> <li></li> </ul> en su lugar.
Mira mi demostración. Pase el cursor sobre cada elemento y la fuente de la imagen cambiará.
const workThumb = document.getElementById('work-thumb'); const works = document.querySelectorAll('.work-list'); works.forEach(item => { item.addEventListener('mouseover', event => { workThumb.src = event.target.dataset.thumb; }); }); <ul> <li class="work-list" data-thumb="https://via.placeholder.com/150x100/ff0000">ITEM-1</li> <li class="work-list" data-thumb="https://via.placeholder.com/150x100/00ff00">ITEM-2</li> <li class="work-list" data-thumb="https://via.placeholder.com/150x100/0000ff">ITEM-3</li> </ul> <img id="work-thumb" src="https://via.placeholder.com/150x100/" alt="">