Hallo,

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

 


Dimby
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.

SanThe.

Ik heb zelf geen verstand van JavaScript, maar moet je niet eerst de functie recalc() aanmaken voordat je 'm aanroept ??

mvg Joost.
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?

[code]
<script type="text/javascript">

var myArray = new Array();

myArray[0] = "0";
myArray[1] = "0";
myArray[2] = "0";

function add(i,v,id){
var w = i*v;
myArray[id] = w;
recalc();
}

function recalc(){
var totaal = Number(myArray[0]) + Number(myArray[1]);
document.getElementById("aantal").innerHTML = totaal;
}

</script>
<br /><br />
<input type="text" name="1" size="1" onkeyup="add(this.value,4,0);"> Auto (4 mensen)<br />
<input type="text" name="2" size="1" onchange="add(this.value,50,1);"> Bus (50 mensen)<br />
<input type="text" name="3" size="1" onchange="add(this.value,150,2);"> Vliegtuig (150 mensen)<br />

<span id="aantal">0</span> mensen
[code]

Paul
<?php
<script type="text/javascript">

var myArray = new Array();

function add(i,v,id){
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 />
<input type="text" name="1" size="1" onkeyup="add(this.value,4,0);"> Auto (4 mensen)<br />
<input type="text" name="2" size="1" onchange="add(this.value,50,1);"> Bus (50 mensen)<br />
<input type="text" name="3" size="1" onchange="add(this.value,150,2);"> Vliegtuig (150 mensen)<br />

<span id="aantal">0</span> mensen
?>

Dit werkt wel. (heh, lekker kort door de bocht)
Bedankt het werkt :)

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


Paul
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.

Reageren