Ankündigung

Einklappen
Keine Ankündigung bisher.

Variable wird bei einer .each() leer geräumt

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Variable wird bei einer .each() leer geräumt

    Hallo,

    ich bin bei meinm script auf ein Problem gestoßen das meine Variable die ich einem Objekt hinzufüge leer geräumt wird.

    Ich habe jetzt verschiedene Methoden ausprobiert, das ganze in ein Array verwandeln, statisch eintragungen zu machen, etc. aber immer leider ohne Erfolg.

    Ausgangssituation :
    Ich habe eine Art bewertungsseite für sich selbst, in dem Bereich geht es um die Sportliche aktivität am Tage. Man kann auswählen wie viele Minuten Mann zb. gejoggt ist und dann eine Selbstbewertung anhand 3er Smiley vornehmen.

    Ich wähle eine Minuten Zahl zwischen 0,0-15,15-30 .... 60+ und dann eines der 3 Smiley , ,

    Wenn ich das ganze Abspeichere läuft mein Script über mein HTML und sammelt alles ein was ich gemacht habe und fügt das einem Objekt hinzu.

    Es fügt Jedoch nur den Wert des ersten Smileys hinzu obwohl mehrere angeklickt sind, in den rest schreibt er eine 0 rein.


    PHP-Code:
    //HTML:
    <tr data-kategorie="ausdauer"><td colspan="4">Ausdauer
                        
    <span class="little">(Joggen,Schwimmen)</span></td>
                    <
    td class="zeit-deritaet"><select name="movementtime"><option value="0">0</option><option value="15">0-15</option><option value="30">15-30</option><option value="45">30-45</option><option value="60">45-60</option><option value="u60">60+</option></select></td>
                    <
    td class="bewertungs-smile" colspan="2"><span class="good-smile gut last-smile" data-wert="30"><img src="/theme/common/media/gut.png" width="18"></span>
                        <
    span class="neutral-smile mittel" data-wert="20"><img src="/theme/common/media/mittel.png" width="18"></span>
                        <
    span class="bad-smile schlecht active-smiley" data-wert="10"><img src="/theme/common/media/schlecht-aktiv.png" width="18"></span></td>
                </
    tr>
                <
    tr data-kategorie="fitness"><td colspan="4">Fitness
                        
    <span class="little">(CenterKurs)</span></td>
                    <
    td class="zeit-deritaet"><select name="movementtime"><option value="0">0</option><option value="15">0-15</option><option value="30">15-30</option><option value="45">30-45</option><option value="60">45-60</option><option value="u60">60+</option></select></td>
                    <
    td class="bewertungs-smile" colspan="2"><span class="good-smile gut last-smile active-smiley" data-wert="30"><img src="/theme/common/media/gut-aktiv.png" width="18"></span>
                        <
    span class="neutral-smile mittel" data-wert="20"><img src="/theme/common/media/mittel.png" width="18"></span>
                        <
    span class="bad-smile schlecht" data-wert="10"><img src="/theme/common/media/schlecht.png" width="18"></span></td>
                </
    tr>
                <
    tr data-kategorie="krafttraining"><td colspan="4">Krafttraining</td>
                    <
    td class="zeit-deritaet"><select name="movementtime"><option value="0">0</option><option value="15">0-15</option><option value="30">15-30</option><option value="45">30-45</option><option value="60">45-60</option><option value="u60">60+</option></select></td>
                    <
    td class="bewertungs-smile" colspan="2"><span class="good-smile gut last-smile" data-wert="30"><img src="/theme/common/media/gut.png" width="18"></span>
                        <
    span class="neutral-smile mittel active-smiley" data-wert="20"><img src="/theme/common/media/mittel-aktiv.png" width="18"></span>
                        <
    span class="bad-smile schlecht" data-wert="10"><img src="/theme/common/media/schlecht.png" width="18"></span></td>
                </
    tr>
                <
    tr data-kategorie="sport"><td colspan="4">Spor
                        
    <span class="little">(z.BFussball,Tennis)</span></td>
                    <
    td class="zeit-deritaet"><select name="movementtime"><option value="0">0</option><option value="15">0-15</option><option value="30">15-30</option><option value="45">30-45</option><option value="60">45-60</option><option value="u60">60+</option></select></td>
                    <
    td class="bewertungs-smile" colspan="2"><span class="good-smile gut last-smile" data-wert="30"><img src="/theme/common/media/gut.png" width="18"></span>
                        <
    span class="neutral-smile mittel" data-wert="20"><img src="/theme/common/media/mittel.png" width="18"></span>
                        <
    span class="bad-smile schlecht" data-wert="10"><img src="/theme/common/media/schlecht.png" width="18"></span></td>
                </
    tr>
                <
    tr data-kategorie="beweglichkeit"><td colspan="4">Beweglichkeit
                        
    <span class="little">(Yoga,TaiChi)</span></td>
                    <
    td class="zeit-deritaet"><select name="movementtime"><option value="0">0</option><option value="15">0-15</option><option value="30">15-30</option><option value="45">30-45</option><option value="60">45-60</option><option value="u60">60+</option></select></td>
                    <
    td class="bewertungs-smile" colspan="2"><span class="good-smile gut last-smile" data-wert="30"><img src="/theme/common/media/gut.png" width="18"></span>
                        <
    span class="neutral-smile mittel" data-wert="20"><img src="/theme/common/media/mittel.png" width="18"></span>
                        <
    span class="bad-smile schlecht" data-wert="10"><img src="/theme/common/media/schlecht.png" width="18"></span></td>
                </
    tr

    PHP-Code:
    //jQuery:
    function getAllValuesMovement(){
        var 
    SmileValues = {};
        $(
    "table.movement-kategorie tr").each(function(){
            $(
    this).children("td.bewertungs-smile").children().each(function(){
                
    childClass = $(this).attr("class").split(" ");
                
    childkategorie = $(this).parent().parent().data("kategorie");
                if($(
    this).hasClass("active-smiley"))
                {
                    
    wert childClass[0];
                }else {
                    
    wert 0;
                }
                
    zeitWert = $(this).parent().parent().children("td.zeit-deritaet").children().val();
                
    SmileValues[childkategorie] = { wertzeitWert};
            });
        });
        
    console.log(SmileValues);
        return 
    SmileValues;

    PHP-Code:
    //DOM Ausgabe:

    ausdauer
        
        Object 
    0="bad-smile"1="45"}
        
    beweglichkeit
        
        Object 
    0=01="30"}
        
    fitness
        
        Object 
    0=01="15"}
        
    frischeluft
        
        Object 
    0=01="0"}
        
    krafttraining
        
        Object 
    0=01="0"}
        
    sport
        
        Object 
    0=01="0"

    habe ich irgendetwas übersehen?

    Viele Grüße und Danke im vorraus


  • #2
    Code:
    function getAllValuesMovement(){
        var SmileValues = {};
        $("table.movement-kategorie tr").each(function(){
            $(this).children("td.bewertungs-smile").children().each(function(){
                childClass = $(this).attr("class").split(" ");
                childkategorie = $(this).parent().parent().data("kategorie");
                if($(this).hasClass("active-smiley"))
                {
                    wert = childClass[0];
                }else {
                    wert = 0;
                }
                zeitWert = $(this).parent().parent().children("td.zeit-deritaet").children().val();
                SmileValues[childkategorie] = { 0 : wert, 1 : zeitWert};
            });
        });
        console.log(SmileValues);
        return SmileValues;
    }
    Warum nimmst du nicht einfach Checkboxen?
    Zitat von nikosch
    Macht doch alle was Ihr wollt mit Eurem Billigscheiß. Von mir aus sollen alle Eure Server abrauchen.

    Kommentar


    • #3
      Weil ich das jetzt in allen Templates ändern müsste + mein komplettes script anpassen, dafür hab ich heute leider keine Zeit mehr, zu viel anderen Krams.

      Meine Möglichkeit funktioniert doch auch ... nur finde ich den Fehler nicht, wieso er nur den ersten Wert in mein objekt zieht ...

      Kommentar


      • #4
        Zitat von eStar Beitrag anzeigen
        Meine Möglichkeit funktioniert doch auch ...
        Na irgendwie ja nicht, sonst wärst du nicht hier.

        http://jsfiddle.net/
        Zitat von nikosch
        Macht doch alle was Ihr wollt mit Eurem Billigscheiß. Von mir aus sollen alle Eure Server abrauchen.

        Kommentar


        • #5
          ich blick da nicht durch, frage mich aber ob es not tut, dass alle selectboxen den selben namen haben,?

          Kommentar


          • #6
            Wo soll active-smiley denn auch herkommen? Insgesamt ein ziemlich schlechtes Script. Vor allem die Stelle:

            wert = childClass[0];

            Oder das da:

            zeitWert = $(this).parent().parent().children("td.zeit-deritaet").children().val();
            --

            „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
            Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


            --

            Kommentar


            • #7
              Kritik Ok,

              Kritik ohne ein Argument, ziemlich bescheiden ...

              Kommentar


              • #8
                //OT:
                wo fehlt dir jetzt das argument?

                Kommentar


                • #9
                  Dein Script ist hochgradig repetitiv, schafft strukturelle Abhängigkeiten und hangelt sich dazu sinnlos durch DOM-Strukturen, nutzt globale Variablen, speichert Daten dort wo sie nicht hingehören (in Klassen), ist ein sprachlicher und semantischer Kauderwelsch... und.. funktioniert halt nicht.
                  --

                  „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                  Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                  --

                  Kommentar

                  Lädt...
                  X