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>"; } }
3 Réponses :
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
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>"; } }
J'ai ajouté result.innerHTML = ''
, cela suffit. Cependant, notez que l'utilisation de innerHTML
est une mauvaise pratique.
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>"; } }
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 } } }
au tout début de la fonction de boucle, définissez result.innerhtml
sur ""