Ik ben een beetje aan het oefenen met JS maar het wil niet echt echt lukken :(
Als ik iets invoer gebeurd er niks, ik denk dat het voorbeeld alles duidelijk maakt.
Wat doe ik nu precies fout, en wat moet ik veranderen om het werkend te maken.
<script type="text/javascript">
var opslag = new Array();
function opslag(aantal,inhoud,id){
var hoeveel = aantal*inhoud;
opslag[id] = hoeveel;
recalc()
}
function recalc(){
var aantal = 0;
for (i=0;i<opslag.length;i++)
{
aantal = aantal+opslag[i];
}
document.getElementById("aantal").innerHTML = aantal;
}
</script>
<input type="text" name="1" size="1" onchange="opslag(this.value,'4','1');"> Auto (4 mensen)<br />
<input type="text" name="2" size="1" onchange="opslag(this.value,'50','2');"> Bus (50 mensen)<br />
<input type="text" name="3" size="1" onchange="opslag(this.value,'150','3');"> Vliegtuig (150 mensen)<br />
<span id="aantal">0</span> mensen
Na wat aanpassing heb ik de volgende nog steeds niet werkende code
<script type="text/javascript">
var opslag = new Array();
function opslag(aantal,inhoud,id){
var hoeveel = aantal*inhoud;
opslag[id] = hoeveel;
recalc();
}
function recalc(){
var aantal = 0;
for (i=0;i<opslag.length;i++)
{
aantal = aantal+opslag[i];
}
document.getElementById("aantal").innerHTML = aantal;
}
</script>
<input type="text" name="1" size="1" onchange="opslag(this.value,4,0);"> Auto (4 mensen)<br />
<input type="text" name="2" size="1" onchange="opslag(this.value,50,1);"> Bus (50 mensen)<br />
<input type="text" name="3" size="1" onchange="opslag(this.value,150,2);"> Vliegtuig (150 mensen)<br />
<span id="aantal">0</span> mensen
Paul
Niet Bumpen:
Twee of meer keer achter elkaar in een topic posten heet bumpen. Bumpen is pas na 24 uur toegestaan en kan een reden zijn voor de admins en moderators om een topic te sluiten. Gebruik indien nodig de knop om je tekst aan te passen.
Hey probleem lag hem erin dat in de arrays niet zomaar kon optellen, inmiddels het werkende script:
Echter nog 1 dingetje, ik moet elke array nu van tevoren benoemen (array[5] = 0), en aangezien ik 40 van die arrays moet gaan maken is doet erg dubbelop. Enige suggesties om dit beter aan te pakken?
Ik heb er een controle op gezet zodat de invoer niet groter kan zijn dan een bepaald getal. Alleen wil ik het veld kan veranderen door de naam in te vullen en niet het element.
Zie code voor wat ik bedoel ;P
<script type="text/javascript">
var myArray = new Array();
function add(i,v,id,b){
if(i>b){
document.forms[0].elements[id].value = b; //WERKT WEL MAAR WIL IK NIET
document.forms[0].id.value = b; //WERKT NIET MAAR WIL IK WEL
document.forms[0].+id+.value = b; //WERKT NIET MAAR WIL IK WEL
i=b;
}
var w = i*v;
myArray[id] = w;
recalc();
}
function recalc(){
var totaal = array_sum(myArray);
document.getElementById("aantal").innerHTML = totaal;
}
function array_sum(array) {
var total = 0;
if(array.length > 0) {
for(var k in array) {
total += parseInt(array[k]);
}
return total;
}
return 0;
}
</script>
<br /><br />
<form name="myform">
<input type="text" name="0" size="1" onkeyup="add(this.value,4,0,5);" value="9"> Auto (4 mensen)<br />
<input type="text" name="1" size="1" onkeyup="add(this.value,50,1,5);" value="9"> Bus (50 mensen)<br />
<input type="text" name="2" size="1" onkeyup="add(this.value,150,2,5);" value="9"> Vliegtuig (150 mensen)<br />
</form>
<span id="aantal">0</span> mensen
Heb je wel in de gaten dat het dus aan parseInt() ligt? Daarmee geef je een variabele het type integer en werkt het +-teken als optelteken, niet als 'string + variabele weergeven'-teken.