Hoi,

Ik gebruik deze for loop, alleen er gebeurt niets:
  if(waarde == 'A')
  {
	binnen.disabled = true;
	loper.disabled = true;
	nvtChange('ladeBinnen');
    option0 = new Option(58,58);
    option1 = new Option(74,74);
    option2 = new Option(90,90);
    option3 = new Option(106,106);
    option4 = new Option(122,122);
    option5 = new Option(138,138);
    option6 = new Option(154,154);
    option7 = new Option(170,170);
    option8 = new Option(186,186);		
    option9 = new Option(202,202);
    option10 = new Option(218,218);
    option11 = new Option(234,234);
    option12 = new Option(250,250);
    option13 = new Option(266,266);		
    option14 = new Option(282,282);
    option15 = new Option(298,298);
    option16 = new Option(314,314);
    option17 = new Option(330,330);
    option18 = new Option(346,346);				
    option19 = new Option(362,362);
    option20 = new Option(378,378);
    option21 = new Option(394,394);
    option22 = new Option(410,410);
    option23 = new Option(426,426);					
    option24 = new Option(442,442);
    option25 = new Option(458,458);
    option26 = new Option(474,474);	
	for(var $i = 0; $i >= 26; $i++)
	{	
	  hoogte.options[$i] = option+$i;
	}


Wat is er fout?
Je zet i op 0(Zonder dollarteken btw)

En vervolgens ga je kijken of i hoger of gelijk aan 26 is...

maar je zet m eerst zelf op 0.. dus dat wordt lastig....
Timen, ga eerst een lezen hoe een for - loop werkt voor je antwoord geeft
Je gebruikt php en javascript door elkaar?

Jelmer schreef op 17.07.2009 10:05

En je mag in Javascript $ gewoon in functie- en variabelenamen gebruiken, dus ja, je kan Javascript schrijven alsof het PHP is :)


Sorry, dit wist ik niet! Weer wat geleerd xD
Timen heeft wel gelijk. Je geeft je for-lus een begintoestand waarbij de conditie al niet waar is, en waardoor hij dus nooit begint met rollen. kleiner-of-gelijk lijkt mij wat je zoekt, in plaats van groter-of-gelijk.

En je mag in Javascript $ gewoon in functie- en variabelenamen gebruiken, dus ja, je kan Javascript schrijven alsof het PHP is :)
Dan mag jij me dat gaan aanwijzen .

Maar probeer het eens zo :

var options = new array();

options[0] = new Option(58,58);
options[1] = new Option(74,74);
options[2] = new Option(90,90);
//enz..

var limit = options.length
for(var i = 0; i <= limit; i++)
{    
   hoogte.appendChild(options[i]);
}



garandeer niet dat mn code 100% foutloos is maar die richting moet je op. Bijkomend voordeel is dat als je een extra optie wil toevoegen dat i deze sctuctuur heel makkelijk kan door gewoon een element aan je array toe te voegen

[edit]
Had Timen zn bericht niet helemaal goed gelezen mijn excuus

o , en heb je code even aangepast.


if(waarde == 'A')
  {
    binnen.disabled = true;
    loper.disabled = true;
    nvtChange('ladeBinnen');
    
    var base = 58 ;
    var numbertToAdd = 16 ;
    var optLimit = 26 ;
    
    for(var x = 0; x <= optLimit ; x++)
    {
    	var myOpt = new Option(base,base) ;
    	hoogte.apendChild(myOpt) ;
    	base += numberToAdd ;
    }
}


Heb je 36 regels even configureerbaar en practischer gemaakt. Dr zit namelijk elke keer een verschil van 16 met de vorige items. op het moment dat je meer dan 6 items heb is het (qua regels code) al rendabel om te loopen.

Hopelijk kan je er wat mee :P
[/edit]
Bedankt Jacco! Hier ken ik erg veel mee.

Alleen hoe krijg ik dit goed:

hoogte.options[$i] = option+$i;


Dat moet ik namelijk hebben. er moet dus bijvoorbeeld komen te staan:

hoogte.options[1] = option1;


Dit werkt helaas niet.
Mijn laatste stukje code doet (als ik het goed heb) precies wat jij wil.

Jou code vervangen door de mijne en zou perfect moeten werken
Helaas werkt dat niet.

Kijk maar

Als je daar type A selecteert, zou Hoogte andere opties moeten krijgen. Dit werkt helaas niet :(

function changeType()
{
  var ok ;
  var waarde = document.bestel.ladeType.value;
  var binnen = document.bestel.ladeBinnen;
  var hoogte = document.bestel.ladeHoogte;  
  var loper = document.bestel.loperType;
	if(waarde == 'A')
	  {
		binnen.disabled = true;
		loper.disabled = true;
		nvtChange('ladeBinnen');
		
		var base = 58 ;
		var numbertToAdd = 16 ;
		var optLimit = 26 ;
		
		for(var x = 0; x <= optLimit ; x++)
		{
			var myOpt = new Option(base,base) ;
			hoogte.apendChild(myOpt) ;
			base += numberToAdd ;
		}
	}
	else
	{
		binnen.disabled = false;
		loper.disabled = false;
		nvtGone ('ladeBinnen');	
	}
}
regel 15 bevat een t teveel (numbertToAdd)

regel 21 appendChild moet met dubbel p

Mijn foutjes maar dan zou het moeten werken , en dat had je zelf ook kunnen bedenken als je de errors had gelezen
Het werkt nu wel erg bedankt! Alleen nu moeten de eerste selecties weg :S Die blijven nu ook staan. Dat was waarom ik .options[i] gebruikte. Maar dat is opgelost door
		for(var x = 0; x <= optLimit ; x++)
		{
			var myOpt = new Option(base,base) ;
			hoogte.options[x] = myOpt;
			base += numberToAdd ;
		}

Reageren