anoniem Geplaatst: 13 december 2004 Delen Geplaatst: 13 december 2004 Ik heb moest als school opdracht een stuk javascript schrijven dat checkt of alles wel is ingevuld in een formulier. Onderstaande code is wat ik heb gemaakt. Er zit echter een probleem in waar niemand uit mijn klas mij mee kan helpen. Op de een of andere manier werkt het getElementById() niet helemaal zoals het zou moeten. de variabele 'veld' staat voor een invoer veld op de html pagina. ik heb al die velden in een array gezet en via de 'for-loop' ga ik de array af. het vreemde is echter dat ik nu met dit stuk code niets te zien krijg en ik in mozilla een javascript error krijg. de error is: Error: document.getElementById(veld[i]) has no properties Line 33 als ik in de for-loop i<10 naar i<1 verander doet het script het wel gewoon alleen krijg ik dan alleen te zien dat het eerste veld leeg is (Voornaam). Weet iemand van jullie wat ik precies fout doe? [code:1:66e4b9cda5] function valideer() { var veld = new Array() veld[0] = "FirstName" veld[1] = "LastName" veld[2] = "Email" veld[3] = "Address" veld[4] = "StreetNo" veld[5] = "PostalCode" veld[6] = "City" veld[7] = "Country" veld[8] = "UserId" veld[9] = "Password" veld[10] = "Password2" var veldnaam = new Array() veldnaam[0] = "Voornaam" veldnaam[1] = "Achternaam" veldnaam[2] = "E-mailadres" veldnaam[3] = "Adres" veldnaam[4] = "Huisnummer" veldnaam[5] = "Postcode" veldnaam[6] = "Plaats" veldnaam[7] = "Land" veldnaam[8] = "Gebruikersnaam" veldnaam[9] = "Wachtwoord" veldnaam[10] = "Nogmaals wachtwoord" var msg = ""; for (i=0; i<10; i++) { if( document.getElementById( veld[i] ).value == "" ) { msg += "Het veld '"+veldnaam[i]+"' is leeg.\n"; } } if (msg.value != "") { alert(msg); } return false; } [/code:1:66e4b9cda5] Quote Link naar reactie
anoniem Geplaatst: 13 december 2004 Auteur Delen Geplaatst: 13 december 2004 Kloppen alle namen in je array met de namen in je formulier? Geen typfouten of hoofdletters fout? Overigens zal je lus het laatste veld nooit controleren [b:b3cd85cb27]i[/b:b3cd85cb27] zal namelijk geen 10 worden. Je kan dit simpel wijzigen door in de lus te zetten: [b:b3cd85cb27]i<=10[/b:b3cd85cb27]. Maar misschien is nog wel makkelijker om gewoon de lengte van je array te gebruiken: [b:b3cd85cb27]i<veld.length[/b:b3cd85cb27] Je kan ook overwegen om je array multi-dimensionaal (een array gevuld met arrays) te maken. Dan hoef je je geen zorgen meer te maken over het aantal velden, en of het aantal veldnamen gelijk is. Voorbeeldje: [code:1:b3cd85cb27] var veld = new Array ( new Array("FirstName", "Voornaam") ,new Array("LastName", "Achternaam") ,new Array("Address", "Adres") ); var msg = ""; for (i = 0; i < veld.length; i++) { msg += veld[i][0] + ": " + veld[i][1] + "\n"; } alert(msg); [/code:1:b3cd85cb27] Een klein nadeel hierbij is de leesbaarheid. Een andere notatie van bovenstaande die ik persoonlijk prettiger vind: [code:1:b3cd85cb27] var veld = [ [ "FirstName", "Voornaam" ] ,[ "LastName", "Achternaam" ] ,[ "Address", "Adres" ] ]; [/code:1:b3cd85cb27] Quote Link naar reactie
anoniem Geplaatst: 14 december 2004 Auteur Delen Geplaatst: 14 december 2004 ik heb t script inmiddels werkend gekregen, bedankt :D Quote Link naar reactie
Aanbevolen berichten
Om een reactie te plaatsen, moet je eerst inloggen