Javascript loop

Status
Niet open voor verdere reacties.

wouteronline55

Gebruiker
Lid geworden
29 dec 2005
Berichten
61
Beste Forumleden,

Een vraag omtrent een loop in javascript.

De situatie:
Ik wil een totaalbedrag dat wordt ingevoerd in een <input> veld gelijkwaardig verdelen over een aantal andere velden. Als er dus 10 wordt ingevoerd als totaalbedrag en er 4 andere velden zijn, dat er dan 2.5 in ieder veld verschijnt. Het aantal andere velden (in dit voorbeeld dus 4) is iedere keer anders.

Het probleem:
Het probleem zit hem in het feit dat het aantal andere velden (waarover het totaalveld verdeeld moet worden) steeds anders is. Ik heb de var aangemaakt met het aantal velden en het is geen probleem om het totaalbedrag over de velden te delen. Echter, het schrijven naar deze velden toe is lastig.

De code tot nu toe:

HTML:
<script type="text/javascript" language="javascript">

function TotaalUitrekenen() {
var europerlid;
var aantalleden;
aantalleden = '<?php echo $var; ?>';
europerlid = document.all.totaal.value / aantalleden;

document.all.lid.value = europerlid;

}

</script>
</head>
<body>

<form>

Totaal <input type="text" name="totaal" onKeyUp="javascript:TotaalUitrekenen()"/>

<?php
	
	for($i=0;$i<$var;$i++) {
	
	$nr=$i+1;
	echo"Lid $nr: <input type=\"text\" name=\"lid$nr\">";
	
	}

?>

</form>

De vraag:
Hoe kan ik ervoor zorgen dat in op regel 9 een loop ontstaat waarmee ik de uitkomsten (europerlid) schrijf naar de velden die de PHP loop later in de pagina genereerd?
 
Laatst bewerkt:
Wat is de code van je velden? Je kunt ze het makkelijkst allemaal een unieke ID geven, dan zou je het volgende kunnen doen:

HTML:
<input type="text" name="veld1" />
<input type="text" name="veld2" />
<input type="text" name="veld3" />
<input type="text" name="veld4" />

Dan doe je in je JS dit:

[JS]
aantalleden = '10';

for ( var i = 1; i <= aantalleden; i++ ) {

document.getElementById( 'veld' + i ).value = europerlid;

}

[/JS]
 
Bedankt voor je reactie. Het werkt echter niet.

[JS]document.getElementById( 'veld' + i ).value = europerlid;
[/JS]

Werkt niet. Zelfs als ik hem statisch maak (en ook zonder loop), doet hij het nog niet.

[JS]document.getElementById( 'veld1').value = europerlid;
[/JS]

De oude manier van schrijven werkt nog wel, maar wel alleen statisch.

[JS]document.all.veld1.value = europerlid;[/JS]
 
HTML:
<input type="text" id="veld1" />
<input type="text" id="veld2" />
<input type="text" id="veld3" />
<input type="text" id="veld4" />

Ik denk dat ErikBooy dit bedoelde toen hij het over unieke ID's voor elk veld had :)
 
Bedankt! Daar zat inderdaad de fout in... Bovenstaand werkt nu goed!

Ik heb nog wel één vraag. Hoe kan ik rekenen met de inhoud van één van de "veld" inputs?

Ik heb nu:

[JS]totaal = totaal+document.getElementById( 'lid' + i ).value;[/JS]

Maar nu zet hij gewoon alle getallen achter elkaar i.p.v. dat hij ze bij elkaar optelt. Ik heb al ergens gelezen dat je ze om moet zetten naar numerieke waarden met bv. parseInt(), maar ik krijg dat niet voor elkaar.
 
De '+' dient in Javascript zowel voor de optelling als voor de concatenatie. Om af te dwingen dat een bepaalde tekst een getal is moet je inderdaad parseInt gebruiken:
[js]totaal = totaal+parseInt(document.getElementById( 'lid' + i ).value);[/js]
 
Laatst bewerkt:
Bedankt. Nu werkt hij inderdaad prima.

Nu ben ik alleen nog op zoek naar een stukje code waarmee ik kan zorgen dat een een letter die ingevoerd wordt in een <input> direct verwijderd wordt.

Iemand suggesties?
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan