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

318
Views
No se puede cambiar el valor predeterminado de la entrada de números en Javascript

Estoy usando Javascript (todavía no estoy familiarizado con marcos como Angular) y trato de obtener y mostrar el valor de una entrada de número de mi HTML, pero cuando ejecuto la función que hace esto, el valor predeterminado de "1" de la HTML parece ser el único que se usa, incluso si cambio la entrada en el sitio web a, digamos, 10 haciendo clic en las flechas.

Creo que he escrito el código correctamente en lo que respecta a la sintaxis, por lo que mi único pensamiento es que quizás la entrada deba estar envuelta en algún tipo de formulario, y el botón "girar" cambió a tipo = "enviar"?

Aquí hay un enlace a un codepen con el código roto y algunos fragmentos de las piezas involucradas a continuación.

 var displayScreen = document.getElementById("display-message"); var rollButton = document.getElementById("roll-button"); //Variable to tell the rollDice() function how many times to roll dice. var numDice = document.getElementById("num-dice").value; //Dice Array to hold the results of the rollDice() function, gets cleared after each use. var diceTotal = []; //Event listener for the "roll" button rollButton.addEventListener("click", rollDice); //Make this function display a roll result function displayMessage() { displayScreen.innerText = diceTotal[0]; } //Generate a random number between 1 and diceType, and set the rolledNumber variable to its result function rollDice() { //Nothing currently changes numDice, so it keeps default value="1". result = 0; var roll = Math.floor(Math.random() * diceType) + 1; for (var i = 0; i < numDice; i++) { result += roll; } diceTotal[0] = result; displayMessage(); }
 <div id="dice-display-div"> <!-- We want to display the dice roll total, any applied bonuses, and then the final total together in this div, possibly as separate <h2> elements. --> <h2 id="display-message">Click "Roll" to Begin</h2> </div> <div id="roll-button-div"> <label class="roll-button-label" for="num-dice" id="num-dice-label">Number of Dice: </label> <input class="roll-button-item" type="number" id="num-dice" name="num-dice" value="1" min="1" max="10"> <label class="roll-button-label" for="bonus" id="bonus-label">Bonus (or Negative): </label> <input class="roll-button-item" type="number" id="bonus" name="bonus" value="0" min="-10" max="10"> <button class="roll-button-item" id="roll-button">Roll</button> </div>

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

0

Primero, debe llamar a su Math.random() dentro del ciclo for, de lo contrario, solo generará aleatoriamente un número, y todos sus dados tendrán ese mismo número. En segundo lugar, debe asignar numDice dentro de su función para que vuelva a verificar y asigne el valor actual en lugar de al comienzo de la representación de la página:

 var displayScreen = document.getElementById("display-message"); var rollButton = document.getElementById("roll-button"); //Dice Array to hold the results of the rollDice() function, gets cleared after each use. var diceTotal = []; //Event listener for the "roll" button rollButton.addEventListener("click", rollDice); //Make this function display a roll result function displayMessage() { displayScreen.innerText = diceTotal[0]; } //Generate a random number between 1 and diceType, and set the rolledNumber variable to its result function rollDice() { //Variable to tell the rollDice() function how many times to roll dice. var numDice = document.getElementById("num-dice").value; //assign this upon function call so it checks it each time the button is clicked to get the latest value //Nothing currently changes numDice, so it keeps default value="1". result = 0; var roll = 0 for (var i = 0; i < numDice; i++) { roll = Math.floor(Math.random() * diceType) + 1; //call random on each dice roll result += roll; } diceTotal[0] = result; displayMessage(); }
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!