0
votes

Boucle sur la somme des deux entrées jusqu'à ce qu'elle soit doublée (javascript)

Je suis coincé ici avec un problème de duch. Il y a 2 deux cases de saisie pour un montant et un taux d'intérêt (%). Si vous cliquez sur le bouton, la page affichera un aperçu du solde jusqu'à ce que le montant doive être doublé. Prenant un nombre simple pour l'exemple 10 - est le montant et 4 - est le taux d'intérêt de 4%. Le résultat doit donc s'arrêter sur un montant de 20.

<! DOCTYPE html>
<html>
<body>

<br>
<input type="text" id="inputB" value="10"><br>
<input type="text" id="inputC"  value="4"><br><br>


<button id="button">Klik</button>

<p> De ingevoerde resultaten: </p>
<p id="result"></p>

<script async src="oefin1.js"></script>
</body>
</html>
document.getElementById("button").onclick = loop;

var inputB = document.getElementById("inputB");
var inputC = document.getElementById("inputC");
var result = document.getElementById("result")


 function loop() {
    var s = inputB.value;
    var r = inputC.value;
    var doubleS = s * 2;
    for (var i = 1; i <= doubleS; i++) {
        s = ((r / 100 + 1) * s);
        result.innerHTML += s + "<br>";
    }
 }


0 commentaires

3 Réponses :


0
votes

Le problème vient de vos limites de boucle for .

Cela va boucler doubleX nombre de fois: for (var i = 0; i

Cela bouclera jusqu'à ce que x dépasse doubleX : for (; x , lequel btw est mieux écrit avec une boucle while : while (x

<input type="text" id="inputB" value="10"><br>
<input type="text" id="inputC" value="4"><br><br>

<button id="button">Klik</button>

<p> De ingevoerde resultaten: </p>
<p id="result"></p>
document.getElementById("button").onclick = loop;

var inputB = document.getElementById("inputB");
var inputC = document.getElementById("inputC");
var result = document.getElementById("result")

function loop() {
  var s = inputB.value;
  var r = inputC.value;
  var doubleS = s * 2;
  result.innerHTML = '';
  while (s < doubleS) {
    s = ((r / 100 + 1) * s);
    result.innerHTML += s + "<br>";
  }
}


1 commentaires

J'ai ajouté result.innerHTML = '' , cela suffit. Cependant, notez que l'utilisation de innerHTML est une mauvaise pratique.



0
votes

Le moyen le plus simple consiste simplement à utiliser une boucle for sans les mathématiques alambiquées avec s au milieu:

function loop() {
    var s = inputB.value;
    var r = inputC.value;
    var doubleS = s * 2;
    for (var i = s; i <= doubleS; i *= ((r / 100) + 1)) {
        result.innerHTML += i + "<br>";
    }
 }


0 commentaires

0
votes

utilisez une boucle while et vérifiez si la valeur de s est supérieure ou égale à doubleS

 <! DOCTYPE html>
<html>
<body>

<br>
<input type="text" id="inputB" value="10"><br>
<input type="text" id="inputC"  value="4"><br><br>


<button id="button">Klik</button>

<p> De ingevoerde resultaten: </p>
<p id="result"></p>

<script async src="oefin1.js"></script>
</body>
</html>
document.getElementById("button").onclick = loop;

var inputB = document.getElementById("inputB");
var inputC = document.getElementById("inputC");
var result = document.getElementById("result")


 function loop() {
    var s = inputB.value;
    var r = inputC.value;
    var doubleS = s * 2;
    while(true) {
        s = ((r / 100 + 1) * s);
        result.innerHTML += s + "<br>";
        if(s >= doubleS){
           break
        }
    }
 }


1 commentaires

au tout début de la fonction de boucle, définissez result.innerhtml sur ""