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

216
Vistas
Can javascript decrease an html value when it's already going up?

I can't find a way for when the value is over 180 (using an if statement), it starts going down as a negative, for example: when the value is over 180, the element with the id "text" becomes -179 then as the slider goes farther, it becomes up to -1. Here is my code;

var slider = document.getElementById("slider");

slider.addEventListener('input', () => {

  document.getElementById("text").innerHTML = slider.value;
  document.getElementById("outer").style.transform = `rotate(${slider.value}deg)`;
  var tv = document.getElementById("text").innerHTML;
  if (slider.value > 180) {
    neg();
  }; //else when it goes back
  function neg() { //stack overflow how to
    document.querySelector("#text").innerHTML = Math.floor(-slider.value + 360 / 2);
  }
});
body {
  display: flex;
  align-items: center;
  justify-content: center;
}

#outer {
  background: red;
  height: 20vw;
  position: relative;
  border-radius: 50%;
  width: 20vw;
  display: flex;
  justify-content: center;
}

#inner {
  transform: rotateZ(180deg) translateY(10%);
  border-bottom-left-radius: 100%;
  border-bottom-right-radius: 100%;
  position: absolute;
  top: 0;
  background: darkgreen;
  width: 10%;
  height: 50%;
}

#text {
  text-align: center;
  width: 3ch;
}

.item {
  border: 2px solid black;
}
<div class="item" id="outer">
  <div id="inner"></div>
</div>
<input class="item" value="0" min="0" max="360" type="range" id="slider">
<div id="text" class="item" style="background-color:lightgrey;padding-inline:1vw;border-radius:10%;border:1vh solid black;">
  0
</div>

Right now, it resets at -0 instead of -179. Sorry if the code is messy, because I have been experimenting to figure this out.

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

0

I think this does what you're looking for:

if (slider.value > 180) {
    document.querySelector("#text").innerHTML = slider.value - 360;
  };

After slider.value is > 180, the display value switches to slider.value - 360.

slider.value = 181 then display value is 181 - 360 = -179
slider.value = 182 then display value is 182 - 360 = -178
slider.value = 183 then display value is 183 - 360 = -177
...

var slider = document.getElementById("slider");

slider.addEventListener('input', () => {

  document.getElementById("text").innerHTML = slider.value;
  document.getElementById("outer").style.transform = `rotate(${slider.value}deg)`;
  var tv = document.getElementById("text").innerHTML;
  if (slider.value > 180) {
    document.querySelector("#text").innerHTML = slider.value - 360;
  };
});
body {
  display: flex;
  align-items: center;
  justify-content: center;
}

#outer {
  background: red;
  height: 20vw;
  position: relative;
  border-radius: 50%;
  width: 20vw;
  display: flex;
  justify-content: center;
}

#inner {
  transform: rotateZ(180deg) translateY(10%);
  border-bottom-left-radius: 100%;
  border-bottom-right-radius: 100%;
  position: absolute;
  top: 0;
  background: darkgreen;
  width: 10%;
  height: 50%;
}

#text {
  text-align: center;
  width: 3ch;
}

.item {
  border: 2px solid black;
}
<div class="item" id="outer">
  <div id="inner"></div>
</div>
<input class="item" value="0" min="0" max="360" type="range" id="slider">
<div id="text" class="item" style="background-color:lightgrey;padding-inline:1vw;border-radius:10%;border:1vh solid black;">
  0</div>

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