Du überschreibst dir bei jedem Durchlauf dein j und am Ende steht der größte Wert drin. Du müsstest die Deklaration von j in die onclick-Funktion stecken, aber dann funktioniert es immer noch nicht, weil die Zuweisung erst beim Klick ausgewertet wird und dann i wieder den maximalen Wert hat.
Die Lösung ist es, den Code in eine anonyme Funktion zu stecken und damit einen neuen Scope für jeden Schleifendurchlauf zu bekommen, in welchem die Variable dann bestand hat.
Die Lösung ist es, den Code in eine anonyme Funktion zu stecken und damit einen neuen Scope für jeden Schleifendurchlauf zu bekommen, in welchem die Variable dann bestand hat.
Javascript:
for (var i = 0; i < items.length; i++)
{
//Anonyme Funktion. Wird sofort ausgeführt und bekommt als Parameter i übergeben. Innerhalb steht es dann als j zur Verfügung.
(function(j) {
items[j].onclick = function ()
{
if(j < 5) {
//...
}
};
})(i);
}