Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

397
Vistas
why my array won't back to 0 (javascript)?

var a = ["red", "blue", "green"];
var i = 0
$(".button").click(function() {
  i++;
  if (i >= 3) {
    i = 0;
  }
  console.log(i);
  $("body").addClass(a[i]);
  console.log(a[i]);
});
.red {
  background-color: red;
}

.blue {
  background-color: blue;
}

.green {
  background-color: green;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<button type="button" class="button">Click</button>

It can turn from white to blue and green, but if i click the button again it won't turn to red, blue, and green. But the console show 1,2,0,1,2,0 and also the color blue, green, red, blue

about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

Your issue is that you're not ever removing the old class, so eventually the body has all three classes and it just uses the last one. Add

$("body").removeClass(a[i]);

to the beginning of your click handler:

var a = ["red", "blue", "green"];
var i = 0
$(".button").click(function() {
  $("body").removeClass(a[i]);
  i++;
  if (i >= 3) {
    i = 0;
  }
  console.log(i);
  $("body").addClass(a[i]);
  console.log(a[i]);
});
.red {
  background-color: red;
}

.blue {
  background-color: blue;
}

.green {
  background-color: green;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<body>
  <button type="button" class="button">Click</button>
</body>

about 4 years ago · Juan Pablo Isaza Denunciar

0

This one will add and remove the different colour classes to and from the document and will not affect any other document classes that might have been assigned before.

const a = ["red", "blue", "green"];
a.i=-1;a.col=function(){const cl=document.body.classList;
 cl.remove(this[this.i++]);
 cl.add(this[this.i%=3]);
 console.log(this.i,this[this.i]);
};

document.querySelector(".button").onclick=ev=>a.col();
.red {
  background-color: red;
}

.blue {
  background-color: blue;
}

.green {
  background-color: green;
}
<button type="button" class="button">Click</button>

about 4 years ago · Juan Pablo Isaza Denunciar

0

Change $("body").addClass(a[i]); to document.body.className = a[i];

And you don't need jQuery.

Like so:

var a = ["red", "blue", "green"];
var i = 0
document.querySelector(".button").addEventListener( 'click', function() {
  i++;
  if (i >= 3) {
    i = 0;
  }
  console.log(i);
  document.body.className = a[i];
  console.log(a[i]);
});
.red {
  background-color: red;
}

.blue {
  background-color: blue;
}

.green {
  background-color: green;
}
<button type="button" class="button">Click</button>

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda