#1 12. Februar 2015 Hallo, Ich habe ein kleines Problem. Javascript gibt mir folgenden Fehler aus: TypeError: produkt is undefined (Zeile 26); Mein Code sieht folgendermasen (beim Client) aus: Code: // 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) Code: 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! + Multi-Zitat Zitieren
#2 12. Februar 2015 AW: for schleife mit Array in Javascript 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(); + Multi-Zitat Zitieren
#4 13. Februar 2015 AW: for schleife mit Array in Javascript Zudem das hier: Code: produkt[1] = new Array(); muss: Code: 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. + Multi-Zitat Zitieren