For loop werkt niet

Status
Niet open voor verdere reacties.

Matthias999

Gebruiker
Lid geworden
29 jan 2019
Berichten
5
Hallo iedereen

Ik ben nog maar een leek in Javascript. Voor een opdracht moet ik een faculteit berekenen via een for-loop. Maar voor de een of andere redenen wilt die niet werken. Als ik in het formulier vakje eender wel getal invul krijg ik als resultaat de waarde van de faculteit alvorens hij in de loop is gegaan (1 dus) Weet er iemand wat er scheelt aan mijn code? Waarom negeert die de for loop?

51373663_379995739224938_2237127913344335872_n.png50829540_529856080753946_6988597864372895744_n.png
 
Is het niet makkelijker als je jouw code hier deelt?
 
HTML:
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>JS PF taak: faculteit</title>
<style>
	<!--
label {
	display:inline-block;
	width:100px;
}
div.vb {
	background-color:#CCFFCC;
	padding:1em;
}
-->
</style>
</head>

<body>

<h1>Javascript PF taak: Faculteit</h1>

<h3>Opdracht: </h3>
<ul>
  <li>De faculteit van een geheel getal is het product van alle gehele getallen van 1 t.e.m. het getal zelf. Bijv: 	5! = 1 * 2 * 3 * 4 * 5 = 120. </li>
  <li>	We veronderstellen dat een getal ingegeven wordt, valideer dat met de functie <code>isNaN()</code></li>
  <li>Opgelet: de faculteit van 0 (0!) is 1, en de faculteit van een negatief getal bestaat niet. </li>
  <li>Indien de invoer goed is toont het de faculteit van dat getal in het outputelement. </li>
  <li>denk er aan decimale getallen in te geven met de decimale punt notatie, gebruik geen komma: 1.54</li>
</ul>
<h3>Geteste topics</h3>
<ul>
  <li>programmatielogica : iteratie</li>
</ul>
<h3>Oplossing: </h3>

<form name="frmFaculteit" id="frmFaculteit" method="get" action="">
<p>
<label for="getal">getal</label>
<input type="text" name="getal" id="getal">
</p>
<p>
<button type="button" id="deKnop">Bereken faculteit</button>
</p>
</form> 
<div class="vb" id="output"></div>
</body>
</html>

Code:
<script>
var nGetal;
window.onload = function(){

var eOutput = document.getElementById('output');
var eGetal = document.getElementById('getal');  
var eKnop = document.getElementById('deKnop');

eKnop.onclick = function(){

     var nGetal = eGetal.value;
	 
     if(nGetal==""||isNaN(nGetal)){
          alert('Deze functie werkt enkel met getallen');
     }
     else{
     eOutput.innerHTML = faculteit(parseInt(nGetal))
	 }
};

} // einde window.onload

function faculteit(n){ // de iteratie
	
	var stekst = "";
	var faculteit = 1;
	
	 
	for ( var teller = 1; teller = nGetal; teller++){
	faculteit = faculteit * teller;
	
	}
	 return faculteit;
	 
	 var eOutput = document.querySelector('#output');
eOutput.innerHTML = stekst;

	 }
	 
</script>
 
Laatst bewerkt:
Je bent goed op weg. Het laatste stukje
Code:
var eKnop = document.getElementById("deKnop");
eKnop.onclick = function() {
  var nGetal;
  var sGetal  = document.getElementById("getal").value;
  var eOutput = document.getElementById("output");
  if (sGetal == '' || isNaN(sGetal)) {
    eOutput.innerHTML = "Geen geldig getal ingevoerd";
  } else {
    nGetal = parseInt(sGetal);
    if (nGetal < 0) {
      eOutput.innerHTML = "Geen geldig getal ingevoerd";
    } else if (nGetal == 0) {
      eOutput.innerHTML = 1;
    } else {
      eOutput.innerHTML = getFaculteit(nGetal);
    }
  }
};
function getFaculteit(max) {
  var faculteit = 1;
  var teller;
  for (teller = 1; teller <= max; teller++) {
    faculteit = faculteit * teller;
  }
  return faculteit;
}

edit: window.onload = function(){...} heb je niet nodig.

edit: het is netter als de if (nGetal == 0) in de functie getFaculteit komt, dat mag jij doen :D

Suc6. Have fun.
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan