for schleife mit Array in Javascript

Dieses Thema im Forum "Webentwicklung" wurde erstellt von BladeFire, 12. Februar 2015 .

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen
  1. #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!
     

  2. Anzeige
  3. #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();
     
  4. #3 12. Februar 2015
    AW: for schleife mit Array in Javascript

    Danke!
     
  5. #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.
     

  6. Videos zum Thema
Die Seite wird geladen...
Similar Threads - schleife Array Javascript
  1. HTC Desire S Bootschleife

    fatmoe , 5. September 2015 , im Forum: Google Android
    Antworten:
    0
    Aufrufe:
    1.146
  2. Antworten:
    5
    Aufrufe:
    678
  3. Antworten:
    12
    Aufrufe:
    903
  4. Antworten:
    9
    Aufrufe:
    535
  5. Antworten:
    5
    Aufrufe:
    825