Toon posts:

[JavaScript] Vars uitwisselen tussen functies

Pagina: 1
Acties:

Verwijderd

Topicstarter
Voor school leren we nu javascript. Hier had ik al wel wat ervaring mee dus het gaat me vrij makkelijk af. Tot ik toch tegen een probleem aanliep waar ik na uren pielen nog steeds niet uit ben gekomen. Op internet (w3schools enzo) kan ik er niks over vinden en op GoT vond ik dit draadje wat wel enigszins wat ideeen naar bovenbracht maar deze hebben tot nu toe niet geholpen.


JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
var vraagNummer = 1;
var totaalPogingen = 1;
//functie voor het voorbereiden op een vraag; variabelen setten en nieuwe randInts maken
function bereidVoor()
{
//functie voor het random genereren van een getal, met mee te geven toe hoe ver ie mag gaan
    function genereerGetal(limiet) 
        {
        randInt = Math.random();
        getal = randInt * limiet;
        getal = Math.floor(getal);
        
        return(getal);
        }
    //vars setten
    var getal0 = genereerGetal(10);
    var getal1 = genereerGetal(10);

    var operatorInt = genereerGetal(3);
    var pogingen = 1;
    var antwoordGoed = false;

    //random operator generaten
    if(operatorInt == 0){
        var operator = "+";
        var antwoord = getal0 + getal1;
        }
    else
    if(operatorInt == 1){
        var operator = "-";
        var antwoord = getal0 - getal1;
        }
    else
    if(operatorInt == 2){
        var operator = "x";
        var antwoord = getal0 * getal1;
        }
    else
    if(operatorInt == 3){
        var operator = ":";
        var antwoord = getal0 / getal1;
        }
}

//antwoord-checkende lus als functie
function vraag()
    {       
    while (antwoordGoed != true)
            {
                var invoer = prompt(vraagNummer + "\nHoeveel is " + getal0 + " " + operator + " " + getal1 + "?","");
                if (invoer == antwoord)
                    {
                        antwoordGoed = true;
                        document.write('<br><br>Vraag 1 correct beantwoord! Goed zo! En dat in maar ' + pogingen + ' keer!');
                        document.write('<br><a href=\'javascript:top.location=window.location\'>Speel nogmaals</a>');
                        volgendeVraag();
                    }
            
                pogingen++;
                document.write("Oeps, foutje! " + invoer + " is helaas niet het goede antwoord..!<br>");
            }

    }

function volgendeVraag()
    {
        if(vraagNummer <= 4)
            {
                vraagNummer++;
                totaalPogingen = totaalPogingen + pogingen;
                bereidVoor();
                vraag();
            }
        else
        if(vraagNummer > 5)
            {
                document.write('<br><br><br><strong>Je hebt alle vragen succesvol beantwoordt! En dat in slechts ' + totaalPogingen + ' keer!');
                exit();
            }
        else
            {
                document.write('<br><br><br><strong>Er is iets heeeeeeel erg fout gegaan! Misschien een hacker :P ?');
            }
    }

bereidVoor();
vraag();


Het gaat hier om een proggie dat random rekenvragen stelt; je gaat pas door als een vraag goed is beantwoord met een totaal van vijf vragen. Het probleem is echter dat de variabelen die in de functie bereidVoor() gedeclareerd worden niet gebruikt kunnen worden in de functie vraag(). In FireFox krijg ik foutmeldingen dat variabelen undefined zijn. Misschien erg n00bisch, maar dit probleem ben ik nog nooit tegen gekomen.

Heeft iemand hier een oplossing voor?

  • Plecky
  • Registratie: Januari 2004
  • Niet online
Heb niet je hele code getest, maar alleen al aan je vraag denk ik een nuttig antwoord te kunnen geven:
Alle variablene die je in bereidVoor() maakt bestaan niet meer als deze functie retourneert. Je moet ze eigenlijk daarvoor declareren, zoals je met vraagNummer en totaalPogingen hebt gedaan

Verwijderd

Topicstarter
Dat heb ik al geprobeerd idd, de code binnen de functie bereidVoor() voor de while-lus van de functie vraag() te zetten. Dat ging wel goed, maar liep ik tegen het zelfde probleem aan alleen dan met bijv. de variabele pogingen.

Is er geen functie/methode om variabelen "public" te maken ofzo?

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 19-05 21:24

NMe

Quia Ego Sic Dico.

Jawel, dat zegt Plecky net? Zet je variabelendeclaratie buiten je functies, en dan is het een global. Zoek op Google maar eens naar documenten die uitleggen hoe scopes werken in JS.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 16:00

crisp

Devver

Pixelated

scope in javascript:
JavaScript:
1
2
3
4
5
6
7
8
blaat = 1; // global scope
var miauw = 2; // global scope
function foo()
{
  var moeh = 3; // local scope
  mekker = 4; // global scope
  var miauw = 5; // herdefinieert in local scope
}

duidelijk?

[ Voor 22% gewijzigd door crisp op 14-11-2004 21:41 ]

Intentionally left blank


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 12-05 22:23

curry684

left part of the evil twins

Javascript = Webdesign & Graphics.

Professionele website nodig?

Pagina: 1