2
respostas

alguém me ajuda, nao consigo entender porque meu código nao funciona

Como faço para mudar minha imagem com um click? pensei em utilizar o appendChild( ) para mudar meu elemento por outro, mas minha logica nao funciona, veja: fica dando erro""

"js"____

const imagensTrocar = document.querySelectorAll("[data-img]") const imagem = document.querySelectorAll("[data-trocar]") console.log(imagem)

let cont = 0;

function aoclick(element){ const mudar = imagensTrocar[cont] element.appendChild(mudar) cont++ if (cont >= imagensTrocar.length){ cont = 0; }

}

imagem.forEach((element)=>{ element.addEventListener("click",aoclick) })

2 respostas

ve se roda seu projeto assim.

const imagensTrocar = document.querySelectorAll("[data-img]") 

const imagem = document.querySelectorAll("[data-trocar]") 
console.log(imagem)

let cont = 0;

function aoclick(element) { 
    const mudar = imagensTrocar[cont] = element.appendChild(mudar) 
    
    cont++ 
    
    if (cont >= imagensTrocar.length){ 
        cont = 0; 
    }

}

imagem.forEach((element)=>{ element.addEventListener("click",aoclick) })
export default aoclick;

consegui achar o problema estava no appendChild, eu selecione filho p/ filho e na verdade é pai pra filho, alem que essa função apenas adiciona um elemento, é nao a troca, como ficou meu codigo agora:

const imagensTrocar = document.querySelectorAll("[data-img]")
const imagem = document.querySelectorAll("[data-trocar]")



let cont = 0;
function aoclick(element){
    const mudar = imagensTrocar[cont];

    imagemAtual = element.target
    atualParent = imagemAtual.parentNode
    atualParent.replaceChild(mudar,imagemAtual)
    console.log(atualParent)
    cont++
    if (cont >= imagensTrocar.length){
        cont = 0;
    }
    
}

imagem.forEach((element)=>{
    element.addEventListener("click",aoclick)
})

mas ainda tem um problema, enquanto to clicando chega um momento que um dos elementos some ainda to tentando resolver.