Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

195
Views
¿Cómo pongo fotos en classlist.remove/add en JS?

Soy nuevo en stackoverflow y comencé a aprender js hace solo unas semanas, aquí está el código:

 'use strict'; let a = 1; king.addEventListener('click', function(){ a++; if(a%2 == 0){ king.classList.remove(?) king.classList.add(?) } else { king.classList.remove(?) king.classList.add(?) } });

a -> contador, king es un div, tengo dos fotos llamadas king0 y king1 en la carpeta pics.

Tarea = cuando se hace clic en el rey, cambia a la segunda imagen -> primera imagen y así sucesivamente

pregunta = ¿cómo pongo fotos en "?", aunque probablemente hice todo mal y tengo que empezar de nuevo

bueno, se solicitó html pero es muy básico:

 <!DOCTYPE html> <html> <head> <meta charset = "UTF-8"> <title>DOC</title> <link rel="stylesheet" href="style.css"> </head> <body> <div id = "king" class = "kingcss"> //kingcss class is empty <img src= "pics/king0.png"> </div> <script src="script.js"></script> </body> </html>
about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

classList no contiene sus imágenes directamente; en cambio, es una lista de nombres de clase CSS aplicados al elemento. Puedes asociar imágenes con esas clases en CSS:

 let a = 0; let king = document.querySelector('.king') king.addEventListener('click', function() { a++; if (a % 2 == 0) { king.classList.add('one') king.classList.remove('two') } else { king.classList.add('two') king.classList.remove('one') } });
 .king { width: 100px; height: 100px; border: 2px solid; } .one { background-image: url('http://placekitten.com/101/101') } .two { background-image: url('//placekitten.com/100/100') }
 <div class="king">King</div>

Sin embargo, voy a sugerir algunas simplificaciones que podría hacer a su código más allá de simplemente hacer que funcione:

  • Depende de una variable global a aquí para realizar un seguimiento de la imagen a la que desea cambiar a continuación. Esto no es necesario y le brinda una cosa más para realizar un seguimiento; en su lugar, sería mejor simplemente verificar el estado actual del elemento.
  • Activa una clase y desactiva otra clase, lo que significa que en realidad tiene cuatro estados posibles (el primero activado, el segundo activado, ambos activados o ambos desactivados) si las cosas no funcionan perfectamente. (En realidad, puede ver esto en el ejemplo anterior; antes de que el usuario haga clic, está en el estado "ambos desactivados"). Realmente solo quieres dos estados posibles: imagen uno o imagen dos.

A continuación se muestra un ejemplo con esos problemas resueltos: en lugar de probar a , prueba los contenidos de classList; y en lugar de tener múltiples clases para alternar, una de las imágenes está en el estado "predeterminado".

 let king = document.querySelector('.king') king.addEventListener('click', function() { king.classList.toggle('two') });
 .king { width: 100px; height: 100px; border: 2px solid; background-image: url('http://placekitten.com/101/101') } .two { background-image: url('//placekitten.com/100/100') }
 <div class="king">King</div>

about 4 years ago · Juan Pablo Isaza Report

0

Por favor agregue su HTML. No todo está mal. Sin mirar su HTML, asumo que tiene una etiqueta de imagen diferente para king0 y king1. Si desea utilizar classList.remove() o classList.add(), debe especificar el nombre de la clase que está agregando o eliminando del nodo classList.

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!