Toon posts:

[js]arrays/for

Pagina: 1
Acties:

Verwijderd

Topicstarter
/me gaat zijn grote angst onder ogen zien: arrays

Maar dat wil niet echt lukken dus :X
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
<script language="javascript">
var myPlanet = new Array(4)
myPlanet [0] = "Mercurius"
myPlanet [1] = "Venus"
myPlanet [2] = "Earth"
myPlanet [3] = "Mars"

var sunDist = new Array(4)
sunDist[0]= "58 milj. Kilometers"
sunDist[1]= "108 milj. Kilometers"
sunDist[2]= "150 milj. Kilometers"
sunDist[3]= "227 milj. Kilometers"

var diameter = newArray (4)
diameter[0]= "5 000 Kilometers"
diameter[1]= "12 400 Kilometers"
diameter[2]= "12 750 Kilometers"
diameter[3]= "6 750 Kilometers"

function getSolar() {
var selectedPlanet = document.enterForm.entry.value
for (var i = 0; i < myPlanet.length; i++) {
if (myPlanet[i] == selectedPlanet) {
break
}
}
document.enterForm.T1.value = myPlanet[i]
document.enterForm.T2.value = sunDist[i]
document.enterForm.T3.value = diameter[i]
}
</script>

De bedoeling is dus dat er een planeetnaam ingevoerd word en dan worden daar een aantal gegevens van geleverd in een textbox (ik wilde eigenlijk gaan kijken of ik het aan de praat kreeg in divjes zonder textbox, maar dan moet ik dus eerst dit aan de praat krijgen 8)7). Ik denk dat mijn code wel aardig klopt, maar ik krijg de ene fout na de ander toegegooid. Het html gedeelte is aardig te raden denk ik... :*)

edit: /me komt tot de conclusie dat het aan de laatste array ligt, maar ziet de fout nog niet

edit 2: |:( 8)7... Dit is echt niet leuk meer... "var diameter = newArray (4)" moet zijn "var diameter = new Array (4)" (spatie vergeten :/)

[ Voor 31% gewijzigd door Verwijderd op 20-03-2004 12:11 ]


  • André
  • Registratie: Maart 2002
  • Laatst online: 26-05 00:33

André

Analytics dude

Wat zijn je foutmeldingen dan?

Edit:
Spatie tussen new en array() 8)7

Edit2:
Zeg ik toch :P

[ Voor 58% gewijzigd door André op 19-03-2004 23:24 ]


Verwijderd

Vraag ik me ook af.. :{

Verwijderd

Topicstarter
André schreef op 19 maart 2004 @ 23:22:
Wat zijn je foutmeldingen dan?

Edit:
Spatie tussen new en array() 8)7

Edit2:
Zeg ik toch :P
ik was je net voor :P *gaat aan de slag met divjes* Ik zat te denken aan .txt'tjes maken en dan met innerHTML te doen? of gaat dat niet werken? :7

  • Amras
  • Registratie: Januari 2003
  • Laatst online: 01-10-2025
Geef de div een id en dan iets in de richting van:

code:
1
2
var d = document.getElementById("divje");
d.appendChild(document.createTextNode("blablabla"));

Verwijderd

Topicstarter
Amras schreef op 19 maart 2004 @ 23:30:
Geef de div een id en dan iets in de richting van:

code:
1
2
var d = document.getElementById("divje");
d.appendChild(document.createTextNode("blablabla"));
dank voor het zetje :), samen met mijn nieuwe naslagwerkje kom ik er zo wel uit hopelijk ;)

edit: voor de geinterresseerde: hier staat ie O-). Ik moet alleen nog even een deleteNode ertussen gooien, maar ik ga eerst slapen :9

[ Voor 24% gewijzigd door Verwijderd op 19-03-2004 23:52 ]


Verwijderd

Verwijderd schreef op 19 maart 2004 @ 23:19:
/me gaat zijn grote angst onder ogen zien: arrays
De bedoeling is dus dat er een planeetnaam ingevoerd word en dan worden daar een aantal gegevens van geleverd in een textbox
Heb je weleens gekeken naar de mogelijkheden van Objects in JavaScript. Die zijn perfect om dit soort data gestructureerd de benaderen.

JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// Definieer eerst een 'constructor'
// Dit is een soort blauwdruk van je Object
function Planet( sName, iSunDist, iDiam) {
    this.sName = sName;
    this.iSunDist = iSunDist;
    this.iDiam = iDiam;

    // Je kunt ook methodes definieren
    // Dat zijn functies die specifiek zijn voor dit Object
    function GetSunDistance() {
        return this.iSunDist + ' mlj. kilometer';
    }

}

// Initieer dan de Objecten.
var Planets = new Array();
Planets['Mercurius'] =  new Planet( 'Mercurius', 58, 5000);
Planets['Venus'] =  new Planet( 'Venus', 108, 12400);
    ...etc...

alert(Planets['Venus'].GetSunDistance());


De mogelijkheden zijn eindeloos. Clay heeft ooit eens een hele uitgebreide tutorial geschreven over Objects in JavaScript. Dat zal een hoop verduidelijken.
Object based JS tutorial

[ Voor 6% gewijzigd door Verwijderd op 20-03-2004 10:17 ]


Verwijderd

Verwijderd schreef op 20 maart 2004 @ 10:02:
[...]

Heb je weleens gekeken naar de mogelijkheden van Objects in JavaScript. Die zijn perfect om dit soort data gestructureerd de benaderen.

JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// Definieer eerst een 'constructor'
// Dit is een soort blauwdruk van je Object
function Planet( sName, iSunDist, iDiam) {
    this.sName = sName;
    this.iSunDist = iSunDist;
    this.iDiam = iDiam;

    // Je kunt ook methodes definieren
    // Dat zijn functies die specifiek zijn voor dit Object
    function GetSunDistance() {
        return this.iSunDist + ' mlj. kilometer';
    }

}

// Initieer dan de Objecten.
var Planets = new Array();
Planets['Mercurius'] =  new Planet( 'Mercurius', 58, 5000);
Planets['Venus'] =  new Planet( 'Venus', 108, 12400);
    ...etc...

alert(Planets['Venus'].GetSunDistance());


De mogelijkheden zijn eindeloos. Clay heeft ooit eens een hele uitgebreide tutorial geschreven over Objects in JavaScript. Dat zal een hoop verduidelijken.
Object based JS tutorial
Dat gaat je niet lukken zo, een functie genest...
Zo moet je dat doen:

code:
1
2
3
4
5
6
function foo()
{
  this.bar = function () {

  }
}

  • Amras
  • Registratie: Januari 2003
  • Laatst online: 01-10-2025
En dan kun je hem beter nog aan de prototype hangen, dus zo:

code:
1
2
3
4
5
6
7
function foo() {

}

foo.prototype.bar = function() {

}

Verwijderd

Verwijderd schreef op 20 maart 2004 @ 10:28:
Dat gaat je niet lukken zo, een functie genest...
Zo moet je dat doen:
Je hebt helemaal gelijk, natuurlijk. :o

Verwijderd

Topicstarter
Het ging me in dit geval meer om dat ik er van zou leren hoe arrays en for-loops werken, aangezien ik die eingelijk nooit gesnapt heb :X. Dus ik ga me nu maar eens verdiepen in Nodes :Y) (stapje voor stapje kom ik er wel :P). Het wil nog niet echt lukken, om een of andere reden levert mijn hasChildNodes() altijd een true :/

/me gaat het object tutorial eens doornemen

[ Voor 16% gewijzigd door Verwijderd op 20-03-2004 12:04 ]


  • Michali
  • Registratie: Juli 2002
  • Laatst online: 22-03 18:12
Euhm. Mischien ben ik punt-komma blind geworden maar ik kan er maar 2 in je script vinden. Zou het niet kunnen zijn dat je die ben vergeten te plaatsten? :+

Noushka's Magnificent Dream | Unity


  • Amras
  • Registratie: Januari 2003
  • Laatst online: 01-10-2025
Dat zou wel veel netter zijn, het maakt voor de werking van je script niet uit. Ze zijn namelijk (jammergenoeg) niet verplicht. ;)

Verwijderd

Verwijderd schreef op 20 maart 2004 @ 11:56:
Het ging me in dit geval meer om dat ik er van zou leren hoe arrays en for-loops werken, aangezien ik die eingelijk nooit gesnapt heb :X.
Da's natuurlijk ook erg nuttig ;)

In je voorbeeld zie ik één probleem:
Java:
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
// Hier haal je de value op uit een formulier.
// Vertrouw dit nooit! Altijd checken! Zie onder
var selectedPlanet = document.enterForm.entry.value;

for (var i = 0; i < myPlanet.length; i++) {
    if (myPlanet[i] == selectedPlanet) {
        break;
    }
}

// Het programma komt hier aan met:
// 1. de index van de geselecteerde planeet, of;
// 2. een niet-bestaande index, als de check op r.6 niet matcht.
// Dat kan dus voor problemen zorgen.
document.enterForm.T1.value = myPlanet[i];
document.enterForm.T2.value = sunDist[i];
document.enterForm.T3.value = diameter[i];

// Veiliger is dit:
var selectedPlanet = document.enterForm.entry.value;

for (var i = 0; i < myPlanet.length; i++) {
    if (myPlanet[i] == selectedPlanet) {
        document.enterForm.T1.value = myPlanet[i];
        document.enterForm.T2.value = sunDist[i];
        document.enterForm.T3.value = diameter[i];
        break;
    }
}

Verwijderd

Topicstarter
Verwijderd schreef op 20 maart 2004 @ 19:44:
[...]

Da's natuurlijk ook erg nuttig ;)

In je voorbeeld zie ik één probleem:
Java:
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
// Hier haal je de value op uit een formulier.
// Vertrouw dit nooit! Altijd checken! Zie onder
var selectedPlanet = document.enterForm.entry.value;

for (var i = 0; i < myPlanet.length; i++) {
    if (myPlanet[i] == selectedPlanet) {
        break;
    }
}

// Het programma komt hier aan met:
// 1. de index van de geselecteerde planeet, of;
// 2. een niet-bestaande index, als de check op r.6 niet matcht.
// Dat kan dus voor problemen zorgen.
document.enterForm.T1.value = myPlanet[i];
document.enterForm.T2.value = sunDist[i];
document.enterForm.T3.value = diameter[i];

// Veiliger is dit:
var selectedPlanet = document.enterForm.entry.value;

for (var i = 0; i < myPlanet.length; i++) {
    if (myPlanet[i] == selectedPlanet) {
        document.enterForm.T1.value = myPlanet[i];
        document.enterForm.T2.value = sunDist[i];
        document.enterForm.T3.value = diameter[i];
        break;
    }
}
Er valt niks te checken, "entry" is een pulldown menu ;), er is dus altijd een geldige value :). Maar bedankt voor het voorbeeld, dit is een handige manier om form-validation in dit soort gevallen te vermijden _/-\o_

[ Voor 6% gewijzigd door Verwijderd op 20-03-2004 20:14 ]

Pagina: 1