TransWikia.com

"mouseover" sobre td, dispara evento en tr en Javascript

Stack Overflow en español Asked by Luis Rodriguez on December 3, 2020

En mi proyecto tengo unas tablas, a las cuales les asigne un event de "mouseover" a sus tr, dentro de la funcion de este evento un efecto de sonido se reproduce cada una de las veces que hago un "mouseover" sobre las tr, pero cada vez que hago un mouseover sobre las td, tambien se dispara ese evento lo cual puede ser molesto para el usuario, he intentado agregando e.stopPropagation y e.preventDefault a mis td, pero no he conseguido nada con exito.

if (document.querySelectorAll('tr') !== 'undefined' && document.querySelectorAll('tr') !== 'null'){
    var rows = document.querySelectorAll('tr')
}
if (document.querySelectorAll('td') !== 'undefined' && document.querySelectorAll('td') !== 'null'){
    var td = document.querySelectorAll('td')
}

//Table Rows
if (rows){
    for(let i = 0; i<rows.length; i++){
        let childNodes = rows[i].childNodes
        if (rows[i].id === ''){
            rows[i].addEventListener('mouseover', function(){
                rows[i].style.backgroundColor = 'cyan'
                rows[i].classList.add('tr-hover')
                sound.play()
                for (let c = 0; c<childNodes.length; c++){
                    if (childNodes[c].nodeName != '#text'){
                        childNodes[c].style.color = '#12212b'
                        if (childNodes[c].children){
                            var children = childNodes[c].children
                            for (var cc = 0; cc<children.length; cc++){
                                children[cc].style.color = '#12212b'
                                children[cc].style.transition = '0.5s'
                                }
                            }
                        }
                    }
                })

        rows[i].addEventListener('mouseout', function(){
            rows[i].style.backgroundColor = ''
            rows[i].classList.remove('tr-hover')
            for (let c = 0; c<childNodes.length; c++){
                if (childNodes[c].nodeName != '#text'){
                    childNodes[c].style.color = 'cyan'
                    if (childNodes[c].children){
                            var children = childNodes[c].children
                            for (var cc = 0; cc<children.length; cc++){
                                children[cc].style.color = 'cyan'
                                }
                            }
                        }
                    }   
                })
        }
    }
}

//TD
if (td){
    for (let i = 0; i<td.length; i++){
        td[i].addEventListener('mouseover', function(e){
            e.stopPropagation()
        })
    }
}

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP