Vollständige Version anzeigen : for schleife mit Array in Javascript


BladeFire
12.02.2015, 16:03

Hallo,

Ich habe ein kleines Problem.

Javascript gibt mir folgenden Fehler aus:

TypeError: produkt[i] is undefined (Zeile 26);


Mein Code sieht folgendermasen (beim Client) aus:


// Die Funktion wird aufgerufen
function suchdas(wert)
{
// Alle Felder werden unsichtbar gemacht
// scheint zu funktionieren
for (var i = 1; i < produkt;length; i++)
{

document;getElementById(i);style;display = 'none';
}

// Die felder die dem eingegeben wert teilweise entsprechen, sollen wieder sichtbar gemacht werden.
for (var i = 1; i < produkt;length; i++)
{
// Hier taucht der fehler auf.
if (produkt[i]["titel"];search(wert) != -1)
{
document;getElementById(i);style;display = '';
}
}

// Wenn der Benutzer nichts eingegeben hat, sollen wieder alle sichtbar sein.
// scheint zu funktionieren
if (wert == '')
{
for (var i = 1; i < produkt;length; i++)
{
document;getElementById(i);style;display = '';
}
}
}
// [..;] HTML [..;]
var produkt = new Array();
produkt[1] = new Array();
produkt[1]["id"] = "1";
produkt[1]["titel"] = "ABC - DEFG";
produkt[1]["kurzbeschreibung"] = "test";
produkt[1]["beschreibung"] = "testtest";
produkt[1]["preis"] = "10";
produkt[1]["kategorie"] = "Testkategorie";

// [..;] HTML [..;]

var produkt = new Array();
produkt[2] = new Array();
produkt[2]["id"] = "2";
produkt[2]["titel"] = "asdfasdfasdf";
produkt[2]["kurzbeschreibung"] = "asdfasdfdsgdsfdsafasdf";
produkt[2]["beschreibung"] = "testdsd";
produkt[2]["preis"] = "10";
produkt[2]["kategorie"] = "Kategorie2";



Wenn ich eine for-in schleife einsetze anstatt einer vor schleife, dann funktiniert es. (Allerdings nur für die nummer 2, Die nummer 1 lässt er aus)


function suchdas(wert)
{
// Alle Felder werden unsichtbar gemacht
// scheint zu funktionieren
for (var i = 1; i < produkt;length; i++)
{

document;getElementById(i);style;display = 'none';
}

// Die felder die dem eingegeben wert teilweise entsprechen, sollen wieder sichtbar gemacht werden.
// läuft nur 1 mal durch. (i ist dabei 2)
for (var i in produkte)
{

// i ist 2
if (produkt[i]["titel"];search(wert) != -1)
{
document;getElementById(i);style;display = '';
}
}
// funktioniert
// Wenn der Benutzer nichts eingegeben hat, sollen wieder alle sichtbar sein.
if (wert == '')
{
for (var i = 1; i < produkt;length; i++)
{
document;getElementById(i);style;display = '';
}
}
}



Danke für eure Antworten!

Hardware Preisvergleich | Amazon Blitzangebote!

Videos zum Thema
Video Loading...
raid-rush
12.02.2015, 17:00

der fehler ist einmal das du bei 1 und nicht 0 anfängst: (geht zwar auch aber ist nicht üblich)

for (var i = 1;

der zweite und eigentliche fehler ist, dass das produkt array überschrieben wird und nur auf index 2 inhalt ist, deshalb hat er bei 0 und 1 einen fehler weil die nicht existieren.


var produkt = new Array();
produkt[1] = new Array();

wird hier überschrieben:

var produkt = new Array();
produkt[2] = new Array();


BladeFire
12.02.2015, 17:11

Danke!


Murdoc
13.02.2015, 18:28

Zudem das hier:

produkt[1] = new Array();

muss:

produkt[0] = new Object();

Array in JavaScript ist, nicht wie in PHP, nur für Listen zuständig.
Eine HashMap aka. Assoziatives Array ist in JavaScript entweder Object oder Map.

PS: Array funktioniert auch, aber nur weil von Object geerbt wurde. Dennoch ist Array in deinem Fall fehl am Platz.


Ähnliche Themen zu for schleife mit Array in Javascript
  • [JavaScript] Schleife mit Ausgabe->Problem.
    Hallo, ich wollte wissen wie ich in eine Schleife eine abfrage einbauen kann der überprüft wie Lang meine Eingabe ist, aus : document;myForm;meineeingabe;value; und dann ab der 12te Stelle in meine Ausgabe Klammern einbaut und an der letzte stelle. Ausgabe: 012345678910(111213141516) [...]

  • [Java] Javascript Schleife mit Abfrage!
    Hallo! Das folgende Tutorial ist ein Beispiel von einer For-Schleife und einer If Abfrage. Das Resultat soll so aussehen: ;;;xup~in/pic,48293197/js;jpg Um eine Zufallszahl zu erzeugen habe ich auf Php zurückgegriffen. Erstens um zu zeigen das so etwas auch realisierbar ist und zum zweiten i [...]

  • [JavaScript] Schleife mit ausgabe Problem.
    Hallo, ich gebe in <input name="tex" type="text" size="10" maxlength="12" /> Zahlen ein. Jetzt ist mein Problem das wenn man 2 Zahlen schreibt wie 12 sollte es diese Ausgabe geben: 000000000012. Wenn ich mehr zahlen eingebe das, wie 123456789 dann soll die Ausgabe angepasst werden. 000 [...]

  • [Java] Array & Schleife
    Hi, hab eine - vermutlich - kurze Frage: Ich hab ein Array mit Länge 1 und möchte dem jetzt ein neues Element HINZUFÜGEN, also hinten dran. Das Element wird vom User eingegeben. int zahlen[]; System;out;println("Element:"); n = SavitchIn;readInt(); Habe das Ganze in einer while Schleife st [...]



raid-rush.ws | Imprint & Contact pr