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

384
Views
¿Cómo obtener la diferencia del valor actual y el valor máximo (barra de progreso)?

alguien puede señalarme/corregirme, ¿por qué la barra de progreso no resta el valor actual del valor máximo? El objetivo se basa en la condición que establecí, si supera el valor máximo, entonces el valor actual - valor máximo y la barra de progreso debe ser 10.

 <progress id="counter" max="100" value="0"></progress> <button onclick="add()"> add + 10 </button> <p id="counterText"> 0 </p>
 function add() { var counterMax = document.getElementById('counter').max; var counterVal = document.getElementById('counter').value; var counterText = document.getElementById('counterText'); var counterAdd = document.getElementById('counter').value = counterVal + 10; counterText.innerHTML = counterAdd; if(counterVal > counterMax) { var counterTotal = document.getElementById('counter').value = counterAdd - counterMax; counterText.innerHTML = counterToTal } }

https://jsfiddle.net/wcjup38z/36/

about 4 years ago · Juan Pablo Isaza
3 answers
Answer question

0

El problema con el algoritmo que desarrolló es que verifica después de asignar un valor al atributo de value del elemento. Más bien, debe asignar un valor al atributo de value después de verificar el valor. Puede usar la siguiente solución para que el valor de la barra de progreso no exceda el valor máximo. Si desea que el elemento <progress> tenga un valor mínimo, debe usar el elemento <meter> .

 let counter = document.getElementById('counter'); let counterText = document.getElementById('counterText'); const addButton = document.getElementById('addButton'); const subtractButton = document.getElementById('subtractButton'); const progressMinValue = 0; addButton.addEventListener('click', function(){ if(counter.value + 10 <= counter.max) { counter.value += 10; counterText.innerHTML = counter.value; } else { let diff = (counter.value + 10) - counter.max; console.log(`Different: ${diff}`); counter.value = 10; counterText.innerHTML = "10"; } }); subtractButton.addEventListener('click', function(){ if((counter.value - 10) >= progressMinValue) { counter.value -= 10; counterText.innerHTML = counter.value; } else { let diff = progressMinValue - (counter.value - 10); console.log(`Different: ${diff}`); } });
 <!-- The "min" attribute of the <progress> element will not work. --> <!-- <meter id="counter" min="0" max="100" value="0"></meter> --> <progress id="counter" max="100" value="0"></progress > <button id="addButton">add (+10)</button> <button id="subtractButton">subtract (-10)</button> <p id="counterText">0</p>

about 4 years ago · Juan Pablo Isaza Report

0

Debe verificar si el siguiente incremento sería mayor o igual que el máximo en la función interna inicial.

 let counterVal = 0; let counterText = document.getElementById('counterText'); const counterMax = document.getElementById('counter').max; function add() { let counterVal = document.getElementById('counter').value; const counterAdd= document.getElementById('counter').value = counterVal + 10; if (counterVal >= counterMax) { alert('max reached'); var counterTotal = document.getElementById('counter').value = counterAdd - counterMax; counterText.innerHTML = counterTotal return false; } counterText.innerHTML = counterAdd; }
 <progress id="counter" max="100" value="0"></progress> <button onclick="add()"> add + 10 </button> <p id="counterText"> 0 </p>

about 4 years ago · Juan Pablo Isaza Report

0

No entiendo bien su pregunta, pero creo que está pidiendo que la barra de progreso comience desde cero después de que llegue al máximo (como lo hacen algunas animaciones de carga). Si eso es cierto, su complemento actualizado sería:

 function add() { const counter=document.getElementById('counter'); const text=document.getElementById('counterText'); //Notice the >= instead of > because a progress bar can never be >100% complete if (counter.value>=counter.max) counter.value=counter.value-counter.max; //The above could also be written as: `if (counter.value==counter.max) counter.value=0;` counter.value+=10; //Let's just copy the value from the counter, instead of independently calculating text.innerText=counter.value; }
  • En lugar de buscar repetidamente el DOM para el contador (usando getElementById ), lo obtengo una vez (como hiciste con el texto)
  • He usado innerText en lugar de innerHtml ; este último puede ser peligroso y, en este caso, no es necesario
  • No puede establecer una barra de progreso a más de su valor máximo ... solo puede subir al valor máximo. Entonces counterVal>counterMax nunca puede ser verdadero, pero counterVal>=counterMax puede serlo. Debido a que está fusionando la configuración de counterText y configurando counterTotal al mismo tiempo (y counterText puede contener cualquier valor), no está viendo la restricción en el contador.
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!