www.webdeveloper.com
Results 1 to 9 of 9

Thread: [RESOLVED] Return statement

Hybrid View

  1. #1
    Join Date
    Nov 2009
    Posts
    65

    resolved [RESOLVED] Return statement

    Code:
    function nieuwGetal(){
    	var g = Math.random()*50;
    	g = Math.round(g);
    	return g;
    }
    var getal = nieuwGetal();
    this should return a new random number between 1 - 50 every time the function is called. It generates a new number but the number in "getal" stays the same. Any idea why this is and how I can make it behave differently?

  2. #2
    Join Date
    Feb 2010
    Location
    Amsterdam
    Posts
    174
    your function works fine, the var getal gets assigned a value when you do var getal = nieuwGetal();

    im guessing your doing this when the page loads, so getal will stay the same value untill the page is loaded again.



    Code:
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
    <html lang="en">
      <head>
        <title>Test</title>
    <script type="text/javascript">
    function nieuwGetal(){
    	var g = Math.random()*50;
    	g = Math.round(g);
    	return g;
    }
    var getal = nieuwGetal();
    </script>
      </head>
      <body>
        <div id="tester"></div>
         <a onclick="document.getElementById('tester').innerHTML = nieuwGetal();return false;" href="#">maak een random nr aan</a>
      </body>
    </html>

  3. #3
    Join Date
    Nov 2009
    Posts
    65
    Thank you for your response.

    The function is called via an onclick event:
    Code:
    <input type="reset" class="button" id="reset" value="Opnieuw" onclick="nieuwGetal()" />
    the complete code
    HTML Code:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <title>Gokwerk</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <link rel="stylesheet" type="text/css" href="gokwerk.css" />
    <script type="text/javascript">
    /* <![CDATA[ */
    var teller = 0;
    
    function nieuwGetal(){
    	teller = 0;
    	var g = Math.random()*50;
    	g = Math.round(g);
    	return g;
    }
    var getal = nieuwGetal();
    
    
    function gokken(){
    	var antwoord = document.getElementById("antwoord");
    	var gok = document.getElementById("gok").value;
    	teller++;
    	
    	if(gok > getal){
    		antwoord.value = "Jammer, maar helaas! Het getal dat we zoeken ligt LAGER!"
    	}
    	
    	if(gok < getal){
    		antwoord.value = "Jammer, maar helaas! Het getal dat we zoeken ligt HOGER!"
    	}
    	
    	if(gok == getal){
    		antwoord.value = "CORRECT! U hebt het getal in "+teller+" keer gevonden!"
    	}
    }
    /* ]]> */
    </script>
    </head>
    <body>
    <div id="wrapper">
    <form action="">
    	<fieldset>
    		<legend>Gokwerk</legend>
    		<div id="text">
    			<p>We hebben een willekeurig getal gekozen tussen 1 en 50. In hoeveel keer kan jij het raden?</p>
    		</div>
    		<div class="field">
    			<input type="text" id="gok" name="gok" size="2" maxlength="2" />
    			<label for="gok">Geef hier je gok in</label>
    		</div>
    		<div class="field">
    			<input type="text" id="antwoord" name="antwoord" size="70" />
    			<label for="antwoord">Antwoord</label>
    		</div>
    		<input type="button" class="button" value="Gokken" onclick="gokken()" />
    		<input type="reset" class="button" id="reset" value="Opnieuw" onclick="nieuwGetal()" />
    		
    	</fieldset>
    </form>
    </div>
    </body>
    </html>

  4. #4
    Join Date
    Feb 2010
    Location
    Amsterdam
    Posts
    174
    ah ok i see what you want todo, if you reassign a value to getal the guessing game can start again, this should do the trick.

    Code:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <title>Gokwerk</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <link rel="stylesheet" type="text/css" href="gokwerk.css" />
    <script type="text/javascript">
    /* <![CDATA[ */
    var teller = 0;
    
    function nieuwGetal(){
    	teller = 0;
    	var g = Math.random()*50;
    	g = Math.round(g);
    	return g;
    }
    var getal = nieuwGetal();
    
    
    function gokken(){
    	var antwoord = document.getElementById("antwoord");
    	var gok = document.getElementById("gok").value;
    	teller++;
    	
    	if(gok > getal){
    		antwoord.value = "Jammer, maar helaas! Het getal dat we zoeken ligt LAGER!"
    	}
    	
    	if(gok < getal){
    		antwoord.value = "Jammer, maar helaas! Het getal dat we zoeken ligt HOGER!"
    	}
    	
    	if(gok == getal){
    		antwoord.value = "CORRECT! U hebt het getal in "+teller+" keer gevonden!"
    	}
    }
    /* ]]> */
    </script>
    </head>
    <body>
    <div id="wrapper">
    <form action="">
    	<fieldset>
    		<legend>Gokwerk</legend>
    		<div id="text">
    			<p>We hebben een willekeurig getal gekozen tussen 1 en 50. In hoeveel keer kan jij het raden?</p>
    		</div>
    		<div class="field">
    			<input type="text" id="gok" name="gok" size="2" maxlength="2" />
    			<label for="gok">Geef hier je gok in</label>
    		</div>
    		<div class="field">
    			<input type="text" id="antwoord" name="antwoord" size="70" />
    			<label for="antwoord">Antwoord</label>
    		</div>
    		<input type="button" class="button" value="Gokken" onclick="gokken()" />
    		<input type="reset" class="button" id="reset" value="Opnieuw" onclick="window.getal = nieuwGetal()" />
    		
    	</fieldset>
    </form>
    </div>
    </body>
    </html>
    gokze

  5. #5
    Join Date
    Nov 2009
    Posts
    65
    Yes clever thinking, that is indeed what I wanted to do!

    Could you also maybe explain what exactly "window.getal = nieuwGetal()" is needed for?

    aha nu lees ik pas "gokze", in het snel overlezen had ik gokze met je nickname verward: Gozzy. Bedankt!

  6. #6
    Join Date
    Feb 2010
    Location
    Amsterdam
    Posts
    174
    je controleerd in de gokfunctie op de variabele getal, die dient dus een nieuwe waarde te krijgen als je het opnieuw wilt spelen, je geeft een nieuwe waarde aan getal door "getal = nieuwGetal()" uit te voeren.

    getal is een globale variabele, ik had ook "getal = nieuwGetal()" of zelfs "window.getal = window.nieuwGetal()" kunnen gebruiken (omdat deze beiden in de globale scope zijn gedefinieerd)

    maar als je window.variabeleNaam gebruikt dan is het zeer duidelijk dat het om een globale variabele gaat en bij functies is dit minder gebruikelijk.

    als je met frames werkt of popups dan zie je "window." vaker terugkomen, als jij bijv een popup maakt.
    Code:
    var a = 'blaat';
    var p = window.open(..) ;
    
    dan kan je nu in de popup window.opener.a aanroepen (die dan dus de waarde blaat heeft) hetzelfde met een functie, als jij de functie function tester(){alert('test'); } hebt gedefineerd kan je dus window.opener.tester(); aanroepen die dan test alert..

  7. #7
    Join Date
    Nov 2009
    Posts
    65
    Quote Originally Posted by Gozzy82 View Post
    je controleerd in de gokfunctie op de variabele getal, die dient dus een nieuwe waarde te krijgen als je het opnieuw wilt spelen, je geeft een nieuwe waarde aan getal door "getal = nieuwGetal()" uit te voeren.
    Is dit niet wat in de functie zelf al gebeurt? Je roept een functie aan die een nieuw getal genereert en die returned telkens een nieuwe waarde?

    "var getal" zou toch op zich telkens een nieuwe waarde moeten krijgen zonder expliciete vermelding ? Anders lijkt mij die return in de functie toch een beetje overbodig of niet

    Het window gedeelte snap ik nu wel dankzij je uitleg, maar ik begrijp nog steeds niet waarom je expliciet getal = nieuwGetal() en niet gewoon nieuwGetal() kan aanroepen. Hmm.

  8. #8
    Join Date
    Feb 2010
    Location
    Amsterdam
    Posts
    174
    Ok kzal het ff verduidelijken,

    de functie nieuwGetal() genereert een nieuw getal

    De variabele getal krijgt aan het begin van de code een waarde toegewezen door de functie nieuwGetal, deze waarde wordt eenmaal toegewezen als de javascript word geladen.

    in function gokken(){ check je op de waarde van getal maar deze veranderd niet (dat wil je ook niet anders moet je wel erg veel gokken als er telkens met een ander getal wordt vergeleken).

    door "window.getal = nieuweWaarde();" uit te voeren krijgt de variabele getal dus een nieuwe waarde en kan het gokspel opnieuw gespeeld worden..

    als je in de functie nieuweWaarde alleen wilt uitvoeren zou je dus de functie moeten aanpassen

    /* <![CDATA[ */
    var teller = 0;
    var getal;
    function nieuwGetal(){
    teller = 0;
    var g = Math.random()*50;
    g = Math.round(g);
    getal = g; ipv return g
    }

  9. #9
    Join Date
    Nov 2009
    Posts
    65
    De variabele getal krijgt aan het begin van de code een waarde toegewezen door de functie nieuwGetal, deze waarde wordt eenmaal toegewezen als de javascript word geladen.
    Ooh ok, ik dacht dat er aan Getal telkens een nieuwe waarde werd toegekend wanneer de functie nieuwGetal() werd aangeroepen. Niet dus.

    Ok, nu snap ik het. Erg bedankt!!

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
HTML5 Development Center



Recent Articles