[JS]Variabelen naar nieuw window

Pagina: 1
Acties:

  • Boeie
  • Registratie: December 2000
  • Laatst online: 01-04 10:49
ik ben bezig met een pagina te maken waarop een formulier staat.

op dit formulier staan 3 inputfields en een submit button.
de gebruiker kan in het eerste veld een getal invoeren waarvan hij de Tafel wil weten: (jeweetwel, 1x TAFEL = SOM, 2x TAFEL = SOM, etc, ik noem deze var TAFEL)
in het 2e veld kan hij invullen bij welk getal de teller (1x,2x,3x) moet beginnen (var TELLER) en in het 3e veld waar deze moet eindigen (var TELLEREIND). (je wil bijvoorbeeld de tafel van 10 weten van 20 tot en met 40)

deze gegevens worden ingevoerd en de gebruiker klikt op de submit button. de gegevens worden gecontroleerd op een aantal dingen:
• is variabele TAFEL >0 en <101
• is variabele TELLEREIND>0 en <101
• is variabele TELLER >0 en <TELLEREIND

dit werkt prima, de gegevens worden gecheckt en de gebruiker krijgt een alert als er een variabele niet klopt.

als alle gegevens kloppen wordt er een alert gegeven dat er een nieuw venster wordt geopend. dit nieuwe venster wordt geopend en daar schrijf ik dmv een
code:
1
nieuwVenster.document.write("hier worden de resultaten getoond")

een testtekst in.

nu wil ik deze berekening invoeren:
code:
1
2
3
4
5
6
7
do
{
SOM = TELLER * TAFEL
nieuwVenster.document.write("TELLER," x ",TAFEL," = ",SOM,"<br>")
TELLER=TELLER + 1
}
while((TELLER<=TELLEREIND) && (WAAR==true));


dit wil echter niet.
hoe los ik dit het beste op? ik wil dus graag dat de gegevens uit de berekening in de do while lus 'geprint' worden in het nieuwe window.

ik heb het al met verscheidene klasgenoten bediscussierd en zij vonden allemaal dat het te moeilijk is om javascript dit uit te laten voeren. maar het moet toch mogelijk zijn zolang het 'originele' eerste venster open blijft?
want JavaScript kan ook dingen in popups laten verschijnen dus waarom niet een berekening?

om de vraag nog even concreet te omschrijven: hoe laat ik een berekening van variabelen weergeven in een nieuw scherm.

[ Voor 7% gewijzigd door Boeie op 09-01-2003 19:48 ]


  • Hangloozz
  • Registratie: Juli 1999
  • Laatst online: 13-07 17:24

Hangloozz

{ @$%&# }

je hebt nou net niet de window.open functie er bij gezet; die bepaalt een beetje of je het in het nieuwe window krijgt of niet...

ik heb maar ff een werkend voorbeeld gemaakt, misschien dat je daar uit kunt halen wat er bij jou misgaat:

HTML:
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
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>
    <title>Untitled</title>
    <SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript">
    <!--
    var tafel = 2;
    var teller = 0;
    var som;
    var tafeleind = 11;
    
    function doMath(){
        for(teller=0; teller<tafeleind; teller++){
            som = teller*tafel;
            newWindow.document.write(teller + "x" + tafel + "=" + som + "<br>");
        }
    }
    
    function prepare(){
        newWindow = window.open('','popup');
        setTimeout('doMath()',1000);
        
    }
    //-->
    </SCRIPT>
</head>

<body>
<a href="#" onclick="prepare();">bereken</a>


</body>
</html>

setTimeout is denk niet echt nodig maar geeft de browser even tijd de popup klaar te stomen :)

www.jurgroessen.nl


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 09:03

crisp

Devver

Pixelated

Als je al dingen in een window gaat schrijven, zorg dan ook dat je geldig (X)HTML wegschrijft (dus een DTD, head-sectie, body-sectie etc.), en sluit het document ook af d.m.v. newWindow.document.close() na het schrijven ;)

Intentionally left blank


  • Hangloozz
  • Registratie: Juli 1999
  • Laatst online: 13-07 17:24

Hangloozz

{ @$%&# }

* Hangloozz spoil the party nou niet :P

het gaat erom of het werkt, en ja hoor het werkt B)

www.jurgroessen.nl


  • Boeie
  • Registratie: December 2000
  • Laatst online: 01-04 10:49
Thx hangloozz, hier heb ik echt wat aan...

zal btw wel alles in nederlandse variabelen veranderen, want dat was het script al...
nu heb ik ff geen tijd meer maar ik ga er moge weer mee bezig.

btw crisp, net maken doen we wel als alles werkt :D

  • Boeie
  • Registratie: December 2000
  • Laatst online: 01-04 10:49
ok, ik ben er weer mee bezig geweest en het voorbeeld van Hangloozz werkt niet... hij opent wel een nieuw venster maar de berekening (de document.write daarvan) wordt niet getoond in het nieuwe venster...

hoe kan dit?

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 09:03

crisp

Devver

Pixelated

Boeie schreef op 16 januari 2003 @ 12:00:
ok, ik ben er weer mee bezig geweest en het voorbeeld van Hangloozz werkt niet... hij opent wel een nieuw venster maar de berekening (de document.write daarvan) wordt niet getoond in het nieuwe venster...

hoe kan dit?
Het voorbeeld van Hangloozz werkt prima hoor, alleen je moet even een seconde wachten voordat de inhoud geschreven wordt :)

Intentionally left blank


  • Hangloozz
  • Registratie: Juli 1999
  • Laatst online: 13-07 17:24

Hangloozz

{ @$%&# }

heb je soms javascript disabled in je preferences :? :P

www.jurgroessen.nl


  • Boeie
  • Registratie: December 2000
  • Laatst online: 01-04 10:49
nee... ik ben er bijna...

mn eigen script doet nu de berekening 1x in een nieuw venster, heb al wat geprobeerd met een do while lus maar ben er nog niet uit, hier tot nu toe het hele script:

HTML:
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
<!doctype html public "-//w3c//dtd html 3.2//en">

<html>

<head>
<title>bla</title>

<script language = "JavaScript">
<!-- 

var WAAR=false
var TAFEL=0
var TELLER=0
var TELLEREIND=0
var SOM;

function verwerk_form()
{   
        if ((document.standaard.TAFEL.value >0) && (document.standaard.TAFEL.value <101))
            {
            WAAR=true;
            }
                else
                {
                alert("onjuiste Tafel invoer, Voer een getal in van 1 t/m 100 ");
                }

WAAR=false;

        if ((document.standaard.TELLER.value>0) && (document.standaard.TELLEREIND.value<101))
            {
            WAAR=true;
            }
                else
                {
                alert("onjuiste begin- of eindinvoer, voer getallen in van 1 t/m 101");
                }
        
        if (WAAR==true)
            {               
            alert("je invoer is goed, de resultaten worden getoond in een nieuw scherm!");              
            nieuwVenster= window.open("", "", "menubar=no,scrollbars=yes,resizable=no,status=no,width=300,height=500")
            nieuwVenster.document.write("<h3>hier worden de resultaten getoond</h3><br>")
            doMath();
            nieuwVenster.document.close()
                
            }       
}
        
function doMath()
{
    SOM = document.standaard.TELLER.value*document.standaard.TAFEL.value;
    nieuwVenster.document.write(document.standaard.TELLER.value + "x" + document.standaard.TAFEL.value + "=" + SOM + "<br>");
}

// end hide -->

</script>

</head>

<body bgcolor="#B4B4B4" text="#000000" link="#0000ff" vlink="#800080" alink="#ff0000">

<FORM name = "standaard">
<h2>Invoer tafelgegevens:</h2>
<pre>
Vul hier het getal in waar u de tafel van wilt weten:       <INPUT type = "text" name= "TAFEL" size= "5" maxlength= "3" >
Vul hier het getal in waar de tafel moet beginnen:      <INPUT type = "text" name= "TELLER" size= "5" maxlength= "3" >
Vul hier het getal in waar de tafel moet eindigen:      <INPUT type = "text" name= "TELLEREIND" size= "5" maxlength= "3" >
Klik hier om de gegevens te verzenden:          <input type="submit" value="Gegevens verzenden" name="VERZEND" onClick= "verwerk_form()">
</pre>

</FORM>

</body>

</html>


hij moet dus nog de Teller+1 doen en dan pas kappen met schrijven als tellereind bereikt is...
TELLER++ en ik dacht dus zo,
HTML:
1
2
3
4
5
6
7
function doMath()
{
do(){
    SOM = document.standaard.TELLER.value*document.standaard.TAFEL.value;
    nieuwVenster.document.write(document.standaard.TELLER.value + "x" + document.standaard.TAFEL.value + "=" + SOM + "<br>");
} while(document.standaard.TELLER.value<=document.standaard.TELLEREIND.value)
}

[ Voor 23% gewijzigd door Boeie op 16-01-2003 12:55 ]


  • Hangloozz
  • Registratie: Juli 1999
  • Laatst online: 13-07 17:24

Hangloozz

{ @$%&# }

ohw, je had het erover dat mijn script niet werkte.. ;)
maar wat je post werkt niet...
Strax ff kijken, nu ff lunsjen :P

www.jurgroessen.nl


  • Boeie
  • Registratie: December 2000
  • Laatst online: 01-04 10:49
wat ben ik ook een n00b :)

maar hij werkt nu:

HTML:
1
2
3
4
5
6
7
8
9
function doMath()
{
    while(document.standaard.TELLER.value<=document.standaard.TELLEREIND.value)
    {
    SOM = document.standaard.TELLER.value*document.standaard.TAFEL.value;
    nieuwVenster.document.write(document.standaard.TELLER.value + "x" + document.standaard.TAFEL.value + "=" + SOM + "<br>");
    document.standaard.TELLER.value++
    }
}

dit is em..

Hangloozz en crisp many thanks!

[edit:]
dit werkt dus ook niet perfect :S
als ik 12, 2 en 4 invul werkt het prima, vul ik ipv 4 als einde 9 in dan loopt ie tot 89! en vul ik 10 als einde in dan toont hij niks... :? het is heel willekeurig... laten we zeggen dattie gewoon nog wat buggy is. :)

[ Voor 32% gewijzigd door Boeie op 16-01-2003 13:48 . Reden: werkt niet helemaal nog ]


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 09:03

crisp

Devver

Pixelated

djeez, leren jullie nog HTML3.2? ;)

Intentionally left blank

Pagina: 1