Announcement

Collapse
No announcement yet.

Cookies mit Variablen vergleichen geht nicht..

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Cookies mit Variablen vergleichen geht nicht..

    Hallo Freunde...
    bin hier am verzweifeln da noch nicht mal eine If-Abfrage funzt.

    Folgendes Problem..
    Ich speichere cookies in Format 0=Wert-1; 1=Wert-1; 2=Wert-2.... u.s.w.
    Beim Auslesen habe ich sie in Paare gesplitet in Array_Satz_Paare[i]
    Array_Satz_Paare[0] = 0=Wert-1
    Array_Satz_Paare[1] = 1=Wert-2
    Array_Satz_Paare[2] = 2=Wert-3

    ....u.s.w.

    Jetzt möchte ich natürlich die Werte haben aber ich komme nicht dran...
    Per alert sehe ich dass sie da sind aber kein if-Vergleich funktioniert!

    Haben die Werte in Cookies irgendein exotische Format oder bin ich doof?
    Habe schon sogar i (von der for-Schleife in String umgewandelt aber es geht immer noch nicht!)

    Code:
            for (i=0; i<= V_Anzahl_Elemente -1; i++)
              {
                 Array_Temp_1 = Array_Satz_Paare[i].split("=");    // wurde schon vorher gesplitten und enthällt 0=Wert1, 1=Wert2...
    
                 var V_i_As_String = i.toString();
                 var V_Array_Temp_1_1_GEMATCHT = Array_Temp_1[0].match(/\b0\b/g);
    
    
                 if(V_i_As_String == V_Array_Temp_1_1_GEMATCHT)
                 {
                        alert("bin in if");
                 }
               } // END for
    Und wie kann ich Reguläre Ausdrucke mit Variablen machen? Brauche Syntax Beispiel!
    also nicht:
    Array_Temp_1[0].match(/\b0\b/g);

    sondern:
    Array_Temp_1[0].match(/\b V_i_As_String\b/g);

  • #2
    Mir ist der Code unverständlich:

    Mit
    Array_Temp_1 = Array_Satz_Paare[i].split("="); // wurde schon vorher gesplitten
    wird offenbar ein 0=Wert-1 gesplittet, aber dieser wurde schon vorher gesplittet?

    Dann soll mit
    Array_Temp_1[0].match(/\b0\b/g);
    der erste Teil des gesplitteten Strings, der eigenlich nur die Ziffer enthalten kann mit einem Ausdruck gematcht werden? Der nach Wortgrenzen sucht? Wozu?

    Dann erfolgt ein Vergleich der Laufvariablen mit dem gesplitteten Wert

    ????

    alert(V_i_As_String);
    alert(V_Array_Temp_1_1_GEMATCHT);

    Sollte zur Prüfung dienen, wenn du nun nicht eine der dir nun bekannten Debug-Umgebungen nutzt





    Christian

    Comment


    • #3
      Für die zweite Frage

      http://forum.de.selfhtml.org/archiv/2005/10/t116592/
      Christian

      Comment


      • #4
        Originally posted by Christian Marquardt View Post
        Mir ist der Code unverständlich:

        Mit
        Array_Temp_1 = Array_Satz_Paare[i].split("="); // wurde schon vorher gesplitten
        wird offenbar ein 0=Wert-1 gesplittet, aber dieser wurde schon vorher gesplittet?
        Also vorher war es alles in einem String:
        Var_String == "0=Wert-1; 1=Wert-1; 2=Wert-2"
        Gesplitet in Array_Satz_Paare[i] mit .split(";")

        jetzt habe ich:
        Array_Satz_Paare[0] = 0=Wert-1
        Array_Satz_Paare[1] = 1=Wert-2
        Array_Satz_Paare[2] = 2=Wert-3
        ....u.s.w.
        und möchte dann von 0=Wert-1, getrennt (0) und (Wert-1) haben.
        Deswegen:
        Array_Temp_1 = Array_Satz_Paare[i].split("=");
        Jetzt habe ich:
        Array_Temp_1[0]= 0
        Array_Temp_1[1]= Wert-1

        Ab hier beginnt das Problem!
        per alert sehe ich dass die Werte drin sind, aber ich komme an sie nicht ran.

        wenn ich mit if Vergleiche dann passiert nichts.

        Originally posted by Christian Marquardt View Post



        Dann soll mit
        Array_Temp_1[0].match(/\b0\b/g);
        der erste Teil des gesplitteten Strings, der eigenlich nur die Ziffer enthalten kann mit einem Ausdruck gematcht werden? Der nach Wortgrenzen sucht? Wozu?
        Aus lauter Verzweiflung!
        Habe natürlich auch ohne match probiert es hat nicht funktioniert! Dann dachte ich dass da vielleicht noch irgendwelche Zeichen mit drin sind.... und habe gematcht.

        Originally posted by Christian Marquardt View Post

        Dann erfolgt ein Vergleich der Laufvariablen mit dem gesplitteten Wert

        ????
        mit Laufvariablen muss ich vergleichen.
        habe natürlich vorher auch ohne match probiert
        if (i == Array_Temp_1[0])
        if (V_i_As_String == Array_Temp_1[0])
        if (V_i_As_String == V_Array_Temp_1_1_GEMATCHT)

        ....Alles aus Verzweiflung weil es nicht funktioniert hat!

        Originally posted by Christian Marquardt View Post
        alert(V_i_As_String);
        alert(V_Array_Temp_1_1_GEMATCHT);

        Sollte zur Prüfung dienen, wenn du nun nicht eine der dir nun bekannten Debug-Umgebungen nutzt
        Stimmt, hätte zwar gerne ein debuger kenne mich aber im Javascript-Land nicht aus.
        Nutze zur Zeit nur Eingebaute Opera und Fitefox Fehlerkonsolen.

        Comment


        • #5
          Habe natürlich auch ohne match probiert es hat nicht funktioniert! Dann dachte ich dass da vielleicht noch irgendwelche Zeichen mit drin sind.... und habe gematcht.
          \b = Wortgrenze -> matcht keine Ziffer

          siehe
          http://de.selfhtml.org/javascript/objekte/regexp.htm

          und ein matchen ändert nichts an den ev. Zeichen die drin stehen, es prüft lediglich.
          Christian

          Comment


          • #6
            Kann das nicht nachvollziehen:
            Funktioniert einwandfrei

            Code:
            <html>
            <header>
            <title>Titel</title>
            <script type="text/javascript">
            eingabe="0=wert0";
            var teile =eingabe.split("=");
            var i=0;
            alert(teile[0]);
            alert(teile[1]);
            if(i==teile[0])
            {
            alert("in if");
            }
            </script>
            </header>
            <body><center>Test</center></body></html>
            Christian

            Comment


            • #7
              Danke,
              lese gerade über RegExp.

              Schon klar dass matchen hier fehl am Platz ist.
              Aber wieso werden die Werte nicht verglichen?

              Gibt es in Javascript unterschied zwischen Vergleich von Zahlen und Strings?
              Habe dazu nichts gefunden. Es wird immer String-1 == String-2 gemacht.


              Muss ich dann (i) in String umwandeln um mit String zu vergleichen?
              ist das zulässig? 0 == "0"
              Oder nur 0 == 0 bzw. "0" == "0"

              Wie kann das denn sein dass Folgendes:
              Array_Temp_1[0] = "0"
              V_i_As_String = "0"

              if(Array_Temp_1[0] == V_i_As_String )
              { alert("bin in if");
              else
              { alert("leck mich!"); }

              mir unanständige Vorschläge macht?!

              Comment


              • #8
                Siehe Beitrag 6.
                Auch das geht

                Code:
                <html>
                <header>
                <title>Titel</title>
                <script type="text/javascript">
                eingabe="0=wert0";
                var teile =eingabe.split("=");
                var i="0";
                alert(teile[0]);
                alert(teile[1]);
                if(i==teile[0])
                {
                alert("in if");
                }
                </script>
                </header>
                <body><center>Test</center></body></html>
                Christian

                Comment


                • #9
                  Originally posted by Christian Marquardt View Post
                  Kann das nicht nachvollziehen:
                  Funktioniert einwandfrei

                  Code:
                  <html>
                  <header>
                  <title>Titel</title>
                  <script type="text/javascript">
                  eingabe="0=wert0";
                  var teile =eingabe.split("=");
                  var i=0;
                  alert(teile[0]);
                  alert(teile[1]);
                  if(i==teile[0])
                  {
                  alert("in if");
                  }
                  </script>
                  </header>
                  <body><center>Test</center></body></html>
                  Ich glaube aber nicht dass es Probleme wegen split gibts.
                  Vielleicht wird in Cookies irgendwie anders gespeichert? Weiss gar nicht was ich noch denken soll?

                  Comment


                  • #10
                    Und auch das funktioniert einwandfrei:

                    Code:
                    <html>
                    <header>
                    <title>Titel</title>
                    <script type="text/javascript">
                    Array_Temp_1 = new Array(100);
                    Array_Temp_1[0] = "0";
                    V_i_As_String = "0";
                    if(Array_Temp_1[0] == V_i_As_String )
                    { alert("bin in if");}
                    else
                    { alert("leck mich!"); }
                    </script>
                    </header>
                    <body><center>Test</center></body></html>
                    Christian

                    Comment


                    • #11
                      In Cookies wird das so gespeichert wie man es vorgibt
                      Christian

                      Comment


                      • #12
                        Also alle diese Beispiele habe ich jetzt bei mit extra laufen lassen und sie funkioneren.
                        Wenn ich das gleiche mache mit den Werten aus Cookies dann bekomme ich nur "leck mich!"

                        Wo ist hier der Hacken?

                        Comment


                        • #13
                          würde auf Leerzeichen tippen. Lass dir mal die Länge der Zeichenketten ausgeben.
                          http://de.selfhtml.org/javascript/ob...ing.htm#length

                          Ein weiteres Problem könnte der Trenner = sein, da Cookies das ebenfalls nutzen

                          Ersetze mal

                          0=Wert-1

                          mit

                          0:Wert-1

                          oder einem anderen Trenner
                          Christian

                          Comment


                          • #14
                            Sorry!
                            Habe der Fehler jetzt gefunden.
                            Ich verwende die Cookies als "Auslagerungsdatei" und habe zwar "Lebzeit" auf < 1 Minute eingestellt, aber die "Viecher " sterben halt nicht so gerne...

                            Bei erneutem Durchlauf von Script liest er noch "nicht gestorbene" Cookies und es kommt alles durcheinander!
                            Muss wohl noch ein Filter einbauen!
                            Danke für deine Hilfe!

                            Tja...
                            Cookies sind halt keine "saubere" Variablen sondern echte Mülltonen!
                            :-)

                            Comment


                            • #15
                              Das Problem ist das meine Cookie Löschfunktion funktioniert nicht:

                              So was geht nicht:
                              Code:
                              function F_Erase_Cookie_(name)
                              {
                                 var cook="name=; expires=Thu, 01-Jan-70 00:00:01 GMT"
                                 document.cookie = cook
                              }
                              Aber so etwas schon:
                              Code:
                              function F_Erase_Cookie()
                              {
                                 now = new Date();
                                 document.cookie = "Probewert_3=; expires="+now.toGMTString();
                              }
                              Kann also keine Parameter an die Löschfunktion übergeben.
                              ausserdem werden sie ausser gefecht gestzt erst nach Reload der Seite.

                              Comment

                              Working...
                              X