[JS] Pointers

Pagina: 1
Acties:

  • Bever
  • Registratie: Maart 2001
  • Laatst online: 10-09 10:05
Ik ben al een paar dagen aan het zoeken (Google, GoT, Manuals) of het mogelijk is om pointers te gebruiken in een JavaScript. Maar ik kan hier nergens wat over vinden. Is dit wel mogelijk? En zo niet, is er een manier om toch een soort pointers te maken op een andere manier?

Verwijderd

Wat bedoel je met pointers? Mouse pointers, of regel pointers voor in de code?

Als je dat laatste bedoelt, dan moet je op een iets andere manier leren programmeren, omdat je die als het goed is eigenlijk nooit nodig hebt.

  • Bever
  • Registratie: Maart 2001
  • Laatst online: 10-09 10:05
een regelpointer.

op wat voor'n manier moet ik dan leren programmeren?

Verwijderd

Dan moet je toch even een voorbeeld geven van waar jij die regel pointer (of label) nodig denkt te hebben. Er bestaat wel zoiets in javascript, maar dat is eigenlijk alleen maar voor als je uit een dubbel geneste loop wilt breken.

Ik weet bijna zeker dat je dit niet niet nodig hebt, en dat het ook zonder kan.

  • Clay
  • Registratie: Oktober 1999
  • Laatst online: 22-06 13:51

Clay

cookie erbij?

Ik heb ook ff op google gekeken, want ik weet amper wat een pointer is :D en daar vond ik dit:
code:
1
2
3
4
5
int i = 1;      /* an integer */
int *ip;        /* a pointer-to-int */
ip = &i;        /* ip points to i */
printf("%d\n", *ip);    /* prints i, which is 1 */
*ip = 5;        /* sets i to 5 */

Dus als ik het goed begrijp is een pointer een variabele die direct verwijst naar een andere, en die die variabele dus ook verandert als je de pointer aanspreekt?

Als dat zo is kan dat op zich wel ja. Als je met objecten werkt werk je zowiezo eigenlijk al met pointers:
code:
1
2
var mijnArray = ['ho','stop','wacht']
var nogEen = mijnArray;

als je nu aan nogEen dingen verandert, verandert dat ook in mijnArray, omdat alletwee de variabelen zelf eigenlijk alleen maar verwijzen naar het object, en het niet echt zelf "zijn".

Bij primitieven zit dat anders, die constuctie van hierboven werkt dan niet, maar je kan wel op een andere manier toch een soort pointer zetten. Ik ben laatst een site tegengekomen die in mozilla de hele Dom van Internet Explorer had nagebouwd, en dan kon je in mozilla dus div eigenschappen met een (voorheen IE only) x = y constructie (dus zonder methode aanroep) aanspreken, waarna er werkelijk wat veranderde aan de layer.

Wat zij deden is een soort setter definen, zo:
code:
1
2
3
4
5
6
7
8
9
10
11
12
<div id="hoi"></div>

<script>


HTMLElement.prototype.__defineSetter__("innerText", function (sText) {
   this.innerHTML = sText.replace(/\&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;");
});

document.getElementById('hoi').innerText = 'hello world ;)';

</script>

Maar ik heb nog geen manier gevonden dit te doen in IE of Ns4. :{ Heb je hier wat aan? :)

Instagram | Flickr | "Let my music become battle cries" - Frédéric Chopin


  • Bever
  • Registratie: Maart 2001
  • Laatst online: 10-09 10:05
nou het zit zo:
Ik moet 3 pulldown menu's hebben per artikel, die moeten afhankelijk van elkaar zijn. Nu heeft iemand mij uitgelegd dat ik het het makkelijks met objecten en pointers kan doen.

in het eerste object komt een id, een naam en een pointer naar het volgende bijbehorende object.

Het moet dus zeg maar een soort boomstructuur worden.

  • Clay
  • Registratie: Oktober 1999
  • Laatst online: 22-06 13:51

Clay

cookie erbij?

dan is mijn reply niet van belang :P lamaar.

Instagram | Flickr | "Let my music become battle cries" - Frédéric Chopin


  • Bever
  • Registratie: Maart 2001
  • Laatst online: 10-09 10:05
Op vrijdag 08 februari 2002 12:38 schreef Clay het volgende:
dan is mijn reply niet van belang :P lamaar.
toch bedankt voor de moeite :)

  • Pelle
  • Registratie: Januari 2001
  • Laatst online: 23:47

Pelle

🚴‍♂️

Op vrijdag 08 februari 2002 12:17 schreef Bever het volgende:
Ik ben al een paar dagen aan het zoeken (Google, GoT, Manuals) of het mogelijk is om pointers te gebruiken in een JavaScript. Maar ik kan hier nergens wat over vinden. Is dit wel mogelijk? En zo niet, is er een manier om toch een soort pointers te maken op een andere manier?
Hoezo zou je dat willen? Wil je linked lists of tree's gaan maken ofzo?

Je kunt in JS custom-made objecten aanmaken; hiermee kun je in ieder geval een eind komen.

Bijvoorbeeld:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
function treeNode(id,parent) {
    this.id    = id;
    this.parent     = parent;
    this.addChild   = addChild;
    function addChild(number,where) {
      node[number] = new treeNode(number,this.id);
      if (where == 'left') {
        this.left   = node[1];
      } else {
        this.right  = node[1];
      }
    }
}

node = new Array();
node[0] = new treeNode(0,null);
node[0].addChild(1,'left' );

alert(node[1].parent);
alert(node[0].left.id);

/edit
Hmm, getikt voor de lunch, en nog niet verstuurd.. zie dat er al wat replies zijn en dit niet helemaal is wat je zoekt.. maar ja, ik laat het lekker staan :)

Voor Clay (en de anderen die willen weten wat pointers zijn):
Pointers zijn een een soort wijzertjes die naar een geheugenadres wijzen. Het voordeel van pointers is dat ze in een taal als Pascal of C on the fly aangemaakt kunnen worden. 'Gewone' variabelen moet je allemaal declareren, zodat de compiler weet dat hij er geheugenruimte voor in moet ruimen.
Maar dat is natuurlijk lastig als je bijvoorbeeld een record-set in je geheugen wilt zetten, zonder dat je weet hoeveel records dat worden.

Daarom (en vast ook nog wel om een hoop andere redenen) zijn die pointers uitgevonden.

Het leuke van pointers is dat je er mooie lijsten of tree's mee kunt maken, door een record te definieren dat uit een waarde en een (of twee, of drie) pointer naar het volgende element in de lijst:

Afbeeldingslocatie: http://jj.upnet.nl/got/pointer.gif

Het einde van de lijst pointert naar niks, NULL. Als je de ene pointer aan de andere gelijk maakt, dan maak je dus niet een nieuwe variabele aan, maar wijst de pointer naar hetzelfde geheugenadres. Het voordeel daarvan is dat je door een hulp-pointer te gebruiken, je heel makkelijk dingen in je lijst of tree kunt invoegen op de plek die jij zelf wilt.

Pointers zijn met de toename van geheugencapaciteit enigszins overbodig geworden; veel programmeertalen laten het on the fly declareren van variabelen en objecten wel toe, maar 20 jaar geleden dacht men nog dat 640k genoeg moest zijn voor iedereen, vandaar dat er dit soort constructies bedacht werden :)

  • Bever
  • Registratie: Maart 2001
  • Laatst online: 10-09 10:05
Afbeeldingslocatie: http://www.skbgroep.nl/test/pointers.bmp
Dit is een voorbeeldje van hoe het moet worden.
De boom moet uiteraard nog verder uitgebreid worden.

  • Pelle
  • Registratie: Januari 2001
  • Laatst online: 23:47

Pelle

🚴‍♂️

Op vrijdag 08 februari 2002 14:48 schreef Bever het volgende:
[afbeelding]
Dit is een voorbeeldje van hoe het moet worden.
De boom moet uiteraard nog verder uitgebreid worden.
Daar kun je dus gewoon objecten voor definieren; zie mijn post van hierboven.

  • Bever
  • Registratie: Maart 2001
  • Laatst online: 10-09 10:05
Op vrijdag 08 februari 2002 15:00 schreef Pelle het volgende:

[..]

Daar kun je dus gewoon objecten voor definieren; zie mijn post van hierboven.
maar die derde bv moet afhankelijk zijn van de 1e en de 2e en niet alleen van de 2e.

  • Pelle
  • Registratie: Januari 2001
  • Laatst online: 23:47

Pelle

🚴‍♂️

Op vrijdag 08 februari 2002 15:01 schreef Bever het volgende:
maar die derde bv moet afhankelijk zijn van de 1e en de 2e en niet alleen van de 2e.
Hoe bedoel je? Dat er een object is waar 2 andere objecten naar wijzen? Dat kan toch?

  • Bever
  • Registratie: Maart 2001
  • Laatst online: 10-09 10:05
Op vrijdag 08 februari 2002 15:16 schreef Pelle het volgende:

[..]

Hoe bedoel je? Dat er een object is waar 2 andere objecten naar wijzen? Dat kan toch?
volgens mij begin ik het aardig te snappen :)

  • Bever
  • Registratie: Maart 2001
  • Laatst online: 10-09 10:05
't wil nog niet echt lukken. Laat ik het nog even proberen beter uit te leggen.

Ik heb een product bv. Appeltaart met artikelnummer 1000
daarbij horen verschillende toevoegingen bv. met suiker toevoegnummer 200 en zonder suiker toevoegnummer 201.
Deze moeten dus allebei gekozen kunnen worden.
Als je met suiker kiest (200) dan moeten de opties: met slagroom (300) en zonder slagroom(301) kiesbaar zijn. Kies je zonder suiker dan alleen zonder slagroom(301).
Bij een ander product bv. Appelflap (1001) moet alleen met suiker(200) gekozen kunnen worden, maar deze kan met slagroom(300) en met suikervrije slagroom(302).
Er moeten dus in totaal 4 pulldown boxen per product kunnen komen die afhankelijk zijn van elkaar.
Hoe kan ik dat het beste oplossen?

  • Pelle
  • Registratie: Januari 2001
  • Laatst online: 23:47

Pelle

🚴‍♂️

Op vrijdag 08 februari 2002 15:19 schreef Bever het volgende:
volgens mij begin ik het aardig te snappen :)
Je objecten bestaan dan dus uit 8 waarden: een id, een parent, 3 waardes en 3 'pointers'. De 3 waarden en pointers kun je het beste weer in een array stoppen:
code:
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
// object definitie
function objectMetPointers(id,parent,records) {
    this.id = id;
    this.parent  = parent;
    this.records = records;
}

// array met objecten
blab = new Array();

// array met records
poep  = new Array(
      new Array("waarde1", 2),
      new Array("waarde2", 3),
      new Array("waarde3", 4));

// nog een array met records
poep2 = new Array(
      new Array("waarde4", 5),
      new Array("waarde5", 6),
      new Array("waarde6", 7));

// object definitie: id = 1, parent = 0, records = poep
blab[1] = new objectMetPointers(1, null, poep);

// nog een object definitie: id = 2, parent = 1, records = poep2
blab[2] = new objectMetPointers(2, 1,    poep2);

// alert de pointer van het nulde record van het object met id 1
alert(blab[1].records[0][1]);

// alert de waarde van het tweede record van het object waar
// het nulde record van blab[1] naar pointert 
// (volg je het nog? :)  
alert(blab[blab[1].records[0][1]].records[2][0]);

Leuk he, dit soort meuk :)

/edit
typo

  • Bever
  • Registratie: Maart 2001
  • Laatst online: 10-09 10:05
Op vrijdag 08 februari 2002 15:30 schreef Bever het volgende:
't wil nog niet echt lukken. Laat ik het nog even proberen beter uit te leggen.

Ik heb een product bv. Appeltaart met artikelnummer 1000
daarbij horen verschillende toevoegingen bv. met suiker toevoegnummer 200 en zonder suiker toevoegnummer 201.
Deze moeten dus allebei gekozen kunnen worden.
Als je met suiker kiest (200) dan moeten de opties: met slagroom (300) en zonder slagroom(301) kiesbaar zijn. Kies je zonder suiker dan alleen zonder slagroom(301).
Bij een ander product bv. Appelflap (1001) moet alleen met suiker(200) gekozen kunnen worden, maar deze kan met slagroom(300) en met suikervrije slagroom(302).
Er moeten dus in totaal 4 pulldown boxen per product kunnen komen die afhankelijk zijn van elkaar.
Hoe kan ik dat het beste oplossen?
niemand?

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 29-08 19:47

Bosmonster

*zucht*

Het eerste wat je in zo'n situatie in ieder geval moet doen is een enkele verzameling met producten (waarschijnlijk iets als ID en naam). Dit kan perfect met een product-object, waar je instanties van trekt.

Vervolgens geef je ieder object een eigenschap "opties" mee. Dit is een array met product-objecten die je hiervan weer kan kiezen.

Dit is de gebruikelijke manier om dit soort problemen op te lossen en kan oneindig doorlopen (je zit dus niet beperkt aan 4).

Snappie? :P

  • Bever
  • Registratie: Maart 2001
  • Laatst online: 10-09 10:05
Op vrijdag 08 februari 2002 16:36 schreef Bosmonster het volgende:
Vervolgens geef je ieder object een eigenschap "opties" mee. Dit is een array met product-objecten die je hiervan weer kan kiezen.
maar dit kan verschillen, afhankelijk van de optie ervoor. dat kan dan toch niet???

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 29-08 19:47

Bosmonster

*zucht*

hmmm. :(

nogal een ingewikkeld data-model dan...

  • Bever
  • Registratie: Maart 2001
  • Laatst online: 10-09 10:05
Op vrijdag 08 februari 2002 16:41 schreef Bosmonster het volgende:
hmmm. :(

nogal een ingewikkeld data-model dan...
idd :'(

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 29-08 19:47

Bosmonster

*zucht*

sowieso uitgaan van je standaard producten database..

je kunt vervolgens wel een "combinatie-object" creeren.

Iets van product/parent ofzo.. dus

1 1001, 0
2 200, 1
3 300, 1
4 201, 2
5 202, 2

Die de keuzes bepalen. Hier moet je wel je database op aanpassen, want ik neem aan dat het adarvandaan gaat komen allemaal :P

update: duh (foutje)

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 29-08 19:47

Bosmonster

*zucht*

nog gelukt?

  • Bever
  • Registratie: Maart 2001
  • Laatst online: 10-09 10:05
Op maandag 11 februari 2002 09:04 schreef Bosmonster het volgende:
nog gelukt?
nee nog niet, ik zit nog met het probleem hoe ik nu kan zien welke ze als parent hebben. ik gebruik geen database. Dit kan niet. Alles moet client-side kunnen draaien dus alleen html en java.
Maar ik heb nu zoiets:
var p_1000 = new Array(0,"Appelflap",3.34);

p_1000[0] is dan de parent.
Maar hoe kan ik nu zoeken welke children er nou allemaal bij een product horen?

  • Bever
  • Registratie: Maart 2001
  • Laatst online: 10-09 10:05
code:
1
2
3
4
5
6
    var p_1000 = new Array(0,"Appelflap",3.34);
    var p_1001 = new Array(0,"Appeltaart",1.22);
    var p_1002 = new Array(0,"Slagroomtaart",2.67);
    var p_200 = new Array(1000,"met slagroom",1);
    var p_201 = new Array(1000,"zonder slagroom",0);
    var p_300 = new Array(200,"met suiker",3);

En nog een vraagje. Als product 300 nou bij 200 en bij 201 moet getoond worden, hoe kan ik dat dan doen?

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 29-08 19:47

Bosmonster

*zucht*

Zoals ik al zei gaat het nooit lukken met alle producten in 1 array/tabel. Logisch als je weet dat niet ieder product dezelfde eigenschappen heeft.

Maak dus 1 array met je producten en 1 array met de eigenschappen en onderlinge banden (waarin je configuraties bepaalt). Een configuratie bestaat echter weer uit verschillende producten etc, dus hier zul je weer iets voor moeten verzinnen, makkelijkste is objecten/array combinatie.

Op een andere manier gaat het nooit werken. Je zult een combinatie van arrays en objecten moeten ontwerpen. Schrijf dus eerst je data-model eens uit op papier (eigenschappen en relaties).

Dus concreet:

- Maak een product-object
- Vul een Array met je product-object instanties (je producten-database'je). Je kunt nu van een object de eigenschappen opslaan (prijs, omschrijving, whatever).
- Maar een combinatie-array
- Vul de combinatie-array met de mogelijke paden per product (zie eerdere post).
- Schrijf een script dat alles kan 'parsen'. Dus producten kan achterhalen uit je combinatie-array.
- Doe daarmee wat je wilt doen...

  • Bever
  • Registratie: Maart 2001
  • Laatst online: 10-09 10:05
code:
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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
    <title>Parent-child</title>
<script language="Javascript">
  function GetProducts(productid){
    var p_undefined = new Array("","");
    var p_1000 = new Array("Appelflap",3.34);
    var p_1001 = new Array("Appeltaart",1.22);
    var p_1002 = new Array("Slagroomtaart",2.67);
    var p_200 = new Array("met suiker",1);
    var p_201 = new Array("zonder suiker",0);
    var p_300 = new Array("met slagroom",3);
    var p_301 = new Array("met extra slagroom",5);
    var p_302 = new Array("zonder slagroom",0);
    var p_400 = new Array("alloh",9);
    var p_401 = new Array("henk",7);
    var p_500 = new Array("shit",9);
    var p_501 = new Array("blaat",7);
    var p_502 = new Array("p502:P",7);
    var data = eval("p_"+productid);
    return data;
  }
  function GetChildDim1(productid){
    var p_1000 = new Array(200,201);
    var p_1001 = new Array(200,201);
    var data = eval("p_"+productid);
    return data;
  }
  function GetChildDim2(productid){
    var p_1000_200 = new Array(300,301);
    var p_1001_200 = new Array(300,301);
    var p_1001_201 = new Array(300,302);
    var data = eval("p_"+productid);
    return data;
  }
  function GetChildDim3(productid){
    var p_1000_200_300 = new Array(400,401);
    var p_1000_200_301 = new Array(400,401);
    var p_1000_201_300 = new Array(400,401);
    var p_1000_201_301 = new Array(400,401);
    var p_1000_201_302 = new Array(400,401);
    var p_1001_200_300 = new Array(400,401);
    var p_1001_200_301 = new Array(400,401);
    var p_1001_201_300 = new Array(400,401);
    var p_1001_201_301 = new Array(400,401);
    var p_1001_201_302 = new Array(400,401);
    var data = eval("p_"+productid);
    return data;
  }
  function GetChildDim4(productid){
    var p_1000_200_300_400 = new Array(500,501,502);
    var p_1000_201_300_400 = new Array();
    var p_1000_200_301_400 = new Array();
    var p_1000_201_301_400 = new Array();
    var p_1000_200_300_401 = new Array(502,501);
    var p_1000_201_300_401 = new Array();
    var p_1000_200_301_401 = new Array();
    var p_1000_201_301_401 = new Array();
    var p_1000_200_302_400 = new Array();
    var p_1000_201_302_400 = new Array();
    var p_1000_200_302_401 = new Array();
    var p_1000_201_302_401 = new Array();
    var p_1001_200_300_400 = new Array(500,501,502);
    var p_1001_201_300_400 = new Array();
    var p_1001_200_301_400 = new Array();
    var p_1001_201_301_400 = new Array();
    var p_1001_200_300_401 = new Array(502,501);
    var p_1001_201_300_401 = new Array();
    var p_1001_200_301_401 = new Array();
    var p_1001_201_301_401 = new Array();
    var p_1001_200_302_400 = new Array();
    var p_1001_201_302_400 = new Array();
    var p_1001_200_302_401 = new Array();
    var p_1001_201_302_401 = new Array();
    var data = eval("p_"+productid);
    return data;
  }
  function Basic(productid,formulier){
    var gegevens = GetProducts(productid);
    document.write(gegevens[0]+"<br>");
    var dim1 = GetChildDim1(productid);
    for(i=0; i < dim1.length; i++) {
    var GetDim2 = productid+"_"+dim1[i];
    var dim2 = GetChildDim2(GetDim2);
    var gegevenschild = GetProducts(dim1[i]);
    formulier.sel0.options[i]=new Option(gegevenschild[0],dim1[i]);
    }
    formulier.sel0.value = dim1[0];
    Basic1(formulier,dim2,GetDim2);
  }
function Basic1(formulier,dim2,GetDim2){
    for (j=0; j < dim2.length; j++) {
      var gegevenschild2 = GetProducts(dim2[j]);
      formulier.sel1.options[j]=new Option(gegevenschild2[0],dim2[j]);
      var GetDim3 = GetDim2+"_"+dim2[j]
      var dim3 = GetChildDim3(GetDim3);
    }
      formulier.sel1.value = dim2[0];
}
/*
      for (k=0; k < dim3.length; k++) {
        var gegevenschild3 = GetProducts(dim3[k]);
        formulier.sel2.options[k]=new Option(gegevenschild3[0]);
        var GetDim4 = GetDim3+"_"+dim3[k]
        var dim4 = GetChildDim4(GetDim4);
        for (l=0; l < dim4.length; l++) {
        var gegevenschild4 = GetProducts(dim4[l]);
        formulier.sel3.options[l]=new Option(gegevenschild4[0]);
        }
      }
    }
*/

</script>

</head>
<body>
  <form name="form0">

    <select name="sel0" size=5>
    <option value=""></option>
    </select>
    <select name="sel1" size=5>
    <option value=""></option>
    </select>
    <select name="sel2" size=5>
    <option value=""></option>
    </select>
    <select name="sel3" size=5>
    <option value=""></option>
    </select>
  </form>
    <script language="Javascript">
     Basic(1000,document.form0);
    </script>
  </body>
</html>

Toch nu maar ff alles posten.
Zo ben ik nu bezig. 2 pulldownboxen lukt bijna. met het stukje tussen /* en */ worden zostraks de andere 2 gemaakt. dit is nog niet helemaal af. Maar volgens mij wil het zo wel lukken. Of denk je van niet en moet ik een andere oplossing zoeken?

  • Bever
  • Registratie: Maart 2001
  • Laatst online: 10-09 10:05
code:
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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
    <title>Parent-child</title>
<script language="Javascript">
  function GetProducts(productid){
    var p_undefined = new Array("","");
    var p_0 = new Array("","");
    var p_1000 = new Array("Appelflap",3.34);
    var p_1001 = new Array("Appeltaart",1.22);
    var p_1002 = new Array("Slagroomtaart",2.67);
    var p_200 = new Array("met suiker",1);
    var p_201 = new Array("zonder suiker",0);
    var p_202 = new Array("met sv suiker",0);
    var p_300 = new Array("met slagroom",3);
    var p_301 = new Array("met extra slagroom",5);
    var p_302 = new Array("zonder slagroom",0);
    var p_400 = new Array("alloh",9);
    var p_401 = new Array("henk",7);
    var p_402 = new Array("pietjuh",3);
    var p_500 = new Array("shit",9);
    var p_501 = new Array("blaat",7);
    var p_502 = new Array("p502:P",7);
    var data = eval("p_"+productid);
    return data;
  }
  function GetChildDim1(productid){
    var p_1000 = new Array(200,201);
    var p_1001 = new Array(200,202);
    var data = eval("p_"+productid);
    return data;
  }
  function GetChildDim2(productid){
    var p_1000_200 = new Array(300,301);
    var p_1000_201 = new Array(301,302);
    var p_1001_200 = new Array(300,302);
    var p_1001_202 = new Array(300,302);
    var data = eval("p_"+productid);
    return data;
  }
  function GetChildDim3(productid){
    var p_1000_200_300 = new Array(400,401);
    var p_1000_200_301 = new Array(400,402);
    var p_1000_201_300 = new Array(402,401);
    var p_1000_201_301 = new Array(400,401);
    var p_1000_201_302 = new Array(402,401);
    var p_1001_200_300 = new Array(400,401);
    var p_1001_200_301 = new Array(402,401);
    var p_1001_200_302 = new Array(402,401);
    var p_1001_201_300 = new Array(400,401);
    var p_1001_201_301 = new Array(402,401);
    var p_1001_201_302 = new Array(400,401);
    var p_1001_202_300 = new Array(400,401);
    var p_1001_202_302 = new Array(400,401);
    var data = eval("p_"+productid);
    return data;
  }
  function GetChildDim4(productid){
    var p_1000_200_300_400 = new Array(500,501,502);
    var p_1000_201_300_400 = new Array(500,0);
    var p_1000_200_301_400 = new Array(501,0);
    var p_1000_200_301_402 = new Array(501,502);
    var p_1000_201_301_400 = new Array(502,0);
    var p_1000_200_300_401 = new Array(502,501);
    var p_1000_201_300_401 = new Array(501,0);
    var p_1000_200_301_401 = new Array(502,0);
    var p_1000_201_301_401 = new Array();
    var p_1000_201_302_402 = new Array();
    var p_1000_200_302_400 = new Array();
    var p_1000_201_302_400 = new Array();
    var p_1000_200_302_401 = new Array();
    var p_1000_201_302_401 = new Array();
    var p_1001_200_300_400 = new Array(501,500,502);
    var p_1001_201_300_400 = new Array();
    var p_1001_200_301_400 = new Array();
    var p_1001_201_301_400 = new Array();
    var p_1001_200_300_401 = new Array(502,501);
    var p_1001_201_300_401 = new Array();
    var p_1001_200_301_401 = new Array();
    var p_1001_201_301_401 = new Array();
    var p_1001_200_302_400 = new Array();
    var p_1001_201_302_400 = new Array();
    var p_1001_200_302_402 = new Array(501,0);
    var p_1001_200_302_401 = new Array();
    var p_1001_201_302_401 = new Array();
    var p_1001_202_300_400 = new Array();
    var p_1001_202_300_402 = new Array();
    var p_1001_202_300_401 = new Array();
    var p_1001_202_302_400 = new Array();
    var p_1001_202_302_401 = new Array(500,0);
    var data = eval("p_"+productid);
    return data;
  }
  function Basic(productid,formulier){
    var gegevens = GetProducts(productid);
    var dim1 = GetChildDim1(productid);
    for(i=0; i < dim1.length; i++) {
    var GetDim2 = productid+"_"+dim1[i];
    var dim2 = GetChildDim2(GetDim2);
    var gegevenschild = GetProducts(dim1[i]);
    formulier.sel0.options[i]=new Option(gegevenschild[0],dim1[i]);
    }
    formulier.sel0.value = dim1[0];
    Basic1(productid,formulier,dim1[0]);
  }
function Basic1(productid,formulier,dim1){
    var GetDim2 = productid+"_"+dim1;
    var dim2 = GetChildDim2(GetDim2);
    formulier.sel1.options.length = 0;
    for (j=0; j < dim2.length; j++) {
      var gegevenschild2 = GetProducts(dim2[j]);
      formulier.sel1.options[j]=new Option(gegevenschild2[0],dim2[j]);
      var GetDim3 = GetDim2+"_"+dim2[j]
      var dim3 = GetChildDim3(GetDim3);
    }
      formulier.sel1.value = dim2[0];
      Basic2(productid,formulier,dim2[0],dim1);
}
function Basic2(productid,formulier,dim2,dim1){
    formulier.sel2.options.length = 0;
    var GetDim3 = productid+"_"+dim1+"_"+dim2;
    var dim3 = GetChildDim3(GetDim3);
    for (j=0; j < dim3.length; j++) {
      var gegevenschild3 = GetProducts(dim3[j]);
      formulier.sel2.options[j]=new Option(gegevenschild3[0],dim3[j]);
      var GetDim4 = GetDim3+"_"+dim3[j]
      var dim4 = GetChildDim4(GetDim4);
    }
      formulier.sel2.value = dim3[0];
      Basic3(productid,formulier,dim2,dim1,dim3[0]);
}
function Basic3(productid,formulier,dim2,dim1,dim3){
    formulier.sel3.options.length = 0;
    var GetDim4 = productid+"_"+dim1+"_"+dim2+"_"+dim3;
    var dim4 = GetChildDim4(GetDim4);
    for (j=0; j < dim4.length; j++) {
      var gegevenschild4 = GetProducts(dim4[j]);
      formulier.sel3.options[j]=new Option(gegevenschild4[0],dim4[j]);
    }
      formulier.sel3.value = dim4[0];
}

</script>

</head>
<body>
  <form name="form0">
   <select name="sel0" size=5 onChange="Basic1(1000,document.form0,document.form0.sel0.value)">
    <option value=""></option>
    </select>
    <select name="sel1" size=5 onChange="Basic2(1000,document.form0,document.form0.sel1.value,document.form0.sel0.value)">
    <option value=""></option>
    </select>
    <select name="sel2" size=5 onChange="Basic3(1000,document.form0,document.form0.sel1.value,document.form0.sel0.value,document.form0.sel2.value)">
    <option value=""></option>
    </select>
    <select name="sel3" size=5>
    <option value=""></option>
    </select>
  </form>
    <script language="Javascript">
     Basic(1000,document.form0);
    </script>
  <form name="form1">
   <select name="sel0" size=5 onChange="Basic1(1001,document.form1,document.form1.sel0.value)">
    <option value=""></option>
    </select>
    <select name="sel1" size=5 onChange="Basic2(1001,document.form1,document.form1.sel1.value,document.form1.sel0.value)">
    <option value=""></option>
    </select>
    <select name="sel2" size=5 onChange="Basic3(1001,document.form1,document.form1.sel1.value,document.form1.sel0.value,document.form1.sel2.value)">
    <option value=""></option>
    </select>
    <select name="sel3" size=5>
    <option value=""></option>
    </select>
  </form>
    <script language="Javascript">
     Basic(1001,document.form1);
    </script>
  </body>
</html>

Zo, dit is de werkende code met 4 menu's

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 29-08 19:47

Bosmonster

*zucht*

congrats ;)

  • Bever
  • Registratie: Maart 2001
  • Laatst online: 10-09 10:05
Op maandag 11 februari 2002 13:59 schreef Bosmonster het volgende:
congrats ;)
:)

kheb er nog ff de prijsbepaling bij in gebouwd :P
werkt ook :)
Pagina: 1