Ik ben nooit goed in javascript geweest, en ik heb een half jaar geleden een script gemaakt. Nu kom ik erachter dat deze niet helemaal lekker loopt in IE.

Ik krijg foutenmeldingen zoals:

'variabele' niet gedefinieerd.

In de head tag gebruik ik dit:

<SCRIPT>
var maat 	= new Array(<? echo $num_m; ?>);
var aantal	= new Array(<? echo $num_m; ?>);
var prijs	= new Array(<? echo $num_m; ?>);
var i =0;

<?php 
$i=0;
while($row = mysql_fetch_array($db_data_b)){?>

var maat[<? echo $i; ?>]=<?  echo $row['maat']; ?>;
var aantal[<? echo $i; ?>]=<?  echo $row['aantal']; ?>;
var prijs[<? echo $i; ?>]='<? echo number_format($row['prijs'], 2, ',', '.' );?>';
i++;
<?php $i++; } ?>
</SCRIPT>


Als output in de broncode heb ik dit:

var maat[0]=124;
var aantal[0]=5;
var prijs[0]='19,55';
i++;
var maat[1]=130;
var aantal[1]=1;
var prijs[1]='10,00';

En hier wil ik midden in de pagina de vars weer aanroepen. Maar dan krijg ik die error:
'aantal' niet gedefinieerd.

<script>
var h=aantal[0];
	for(var v=1;v<=h;v++){
var option = document.getElementById('aantal_c');
option.innerHTML+="<option 
value='"+v+"'>"+v+"</option>";
}
var option_m = document.getElementById('hidden_maat');		
option_m.value=maat[0];
</script>



Wat doe ik verkeerd?
Omdat je het keyword 'var' er nog een keer voor zet gaat het fout. Dat hoeft alleen de allereerste keer, bij de declaratie/initialisatie.
Ja het klopt. Maar dat was niet het enige probleem.
Ik had ergens tussen het javascript <!-- en --> staan. Ik begrijp nog steeds niet waarom dat er niet mag staan.
(altijd al gedaan).

Ik heb nog 1 probleem die ook alleen in IE voor komt.

<select id="aantal_c" name="aantal" class="P"></select>

Dit staat in de bron.
En dit komt er vlak achterna:

<script>
var h=aantal[0];
for(var v=1;v<=h;v++){
var option = document.getElementById('aantal_c');
option.innerHTML+="<option value='"+v+"'>"+v+"</option>";
}
var option_m = document.getElementById('hidden_maat');
option_m.value=maat[0];
</script>


Oplossing gevonden. Het is een soort bug in IE, het moet dus niet met innerHTML want dat werkt niet goed met select.

Reageren