Thoamschek: Funktion will nicht so richtig

Hallo zusammen,

im folgenden Script greife ich auf einen Variable mit dem Namen "check_name" zu. Diese wird automatisch durch ein Programm gefüllt. Wenn dieses Variable den Inhalt des Array "daten" hat soll auf eine andere Seite verzweigt werden. Andernfalls soll nichts passieren - ich meine wirklich nichts. Die Seite soll einfach nur normal geladen werden. Ich weiss nur nicht wie ich das machen soll. Das Script habe ich mir selbst durch Suchen im Forum zusammengebastelt. Ich bin leider ein JavaScript-Noob. Weiss jemand Rat?

<script language="JavaScript">
var check_name = 'wird automatisch generiert'
var daten = new Array();
daten[1] = "HANS";
daten[2] = "MEIER";
daten[3] = "THOMAS";
for(i=1;i<daten.length;i++)
if (daten[i] != check_name) {
location.href="http://www.link1.de";
}
else {

??????????????????????

}
</script>

Gruß,
Thoamschek

  1. Hi Thomaschek,

    Ja, was könnte man in den else-Zweig reinschreiben, damit "nichts" passiert? Hm, vielleicht den else-Zweig weglassen?

    <script language="JavaScript">
    var check_name = 'wird automatisch generiert';
    var daten = new Array();
    daten[1] = "HANS";
    daten[2] = "MEIER";
    daten[3] = "THOMAS";
    for(i=1;i<daten.length;i++)
    if (daten[i] != check_name) {
    location.href="http://www.link1.de";
    }

    </script>

    Gruß

    daten[1]

    1. Hallo Hans,
      es läuft leidern nicht. Wenn zum Beispiel "Hans" übergeben wird, wird der Link geöffnet obwohl es nicht so sein sollte?
      Gruß,
      Thomaschek

      Hi Thomaschek,

      Ja, was könnte man in den else-Zweig reinschreiben, damit "nichts" passiert? Hm, vielleicht den else-Zweig weglassen?

      <script language="JavaScript">
      var check_name = 'wird automatisch generiert';
      var daten = new Array();
      daten[1] = "HANS";
      daten[2] = "MEIER";
      daten[3] = "THOMAS";
      for(i=1;i<daten.length;i++)
      if (daten[i] != check_name) {
      location.href="http://www.link1.de";
      }
      </script>

      Gruß

      daten[1]

      1. Hallo!

        Hallo Hans,
        es läuft leidern nicht. Wenn zum Beispiel "Hans" übergeben wird, wird der Link geöffnet obwohl es nicht so sein sollte?

        Das liegt daran, dass "Hans" ungleich "HANS" ist.

        mfg
          frafu

        1. Hallo Frafu,

          "Das liegt daran, dass "Hans" ungleich "HANS" ist."

          Es geht leider auch nicht mit "HANS".
          Gruß,
          Thomaschek

          Hallo!

          Hallo Hans,
          es läuft leidern nicht. Wenn zum Beispiel "Hans" übergeben wird, wird der Link geöffnet obwohl es nicht so sein sollte?

          Das liegt daran, dass "Hans" ungleich "HANS" ist.

          mfg
            frafu

          1. Hallo!

            Ich hab mir das davorne gar nicht genau angeschaut. Ich hab nur "Hans" und "HANS" gesehen und auf die case-sensitivität getippt.

            Aber schau dir dein Script doch mal an:

            <script language="JavaScript">
            var check_name = 'HANS';
            var daten = new Array();
            daten[1] = "HANS";
            daten[2] = "MEIER";
            daten[3] = "THOMAS";
            for(i=1;i<daten.length;i++)
            if (daten[i] != check_name) {
            location.href="http://www.link1.de";
            }
            </script>

            check_name ist jetzt mit "HANS" initialisiert.
            Jetzt willst du also, das der Link NICHT aufgeht? Wieso sollte er das nicht tun?
            Im ersten Schleifendurchlauf wird "HANS"!="HANS" überprüft. Das ergibt false und der Link geht nicht auf.
            Im zweiten Durchlauf wird "MEIER"!="HANS" überprüft. Das ergibt true und location.href wird ausgeführt.

            Was genau möchtest du erreichen?

            mfg
              frafu

            1. Hallo FraFu,

              das dachte ich auch, als ich mir das Script angesehen hatte. Aber dann habe ich den Text noch einmal gelesen und anders verstanden. Vieleicht sagt Thoamschek noch einmal, wann auf eine andere Seite gegangen werden soll.

              Gruß, Jürgen

            2. Hallo Frafu,

              ach so. So habe ich das nicht betrachtet! Frafu was ich erreichen möchte ist folgendes. Das Javascript soll das gesamte Array durchschauen und prüfen ob der Wert der Variable check_name drin vorkommt. Es soll quasi nur einmal durhlaufen werden. Wenn es keinen vergleichbaren Wert findet soll sich die Seite öffnen. Sollte aber mindestens 1 Wert aus dem Array dem Inhalt der Variable check_name entspechen soll nichts passieren. Mist. Ich kanns nicht anders erklären :-(
              Grüße,
              Thomaschek

              1. moin Thomaschek :)

                ach so. So habe ich das nicht betrachtet! Frafu was ich erreichen möchte ist folgendes. Das Javascript soll das gesamte Array durchschauen und prüfen ob der Wert der Variable check_name drin vorkommt. Es soll quasi nur einmal durhlaufen werden. Wenn es keinen vergleichbaren Wert findet soll sich die Seite öffnen. Sollte aber mindestens 1 Wert aus dem Array dem Inhalt der Variable check_name entspechen soll nichts passieren. Mist. Ich kanns nicht anders erklären :-(

                Das erklärt einiges...
                 <script language="JavaScript">
                 var check_name = 'HANS';
                 var daten = new Array();
                 daten[1] = "HANS";
                 daten[2] = "MEIER";
                 daten[3] = "THOMAS";
                 boolean weiter=true;
                 for(i=1;i<daten.length;i++)
                 if (daten[i] == check_name) {
                   weiter=false;
                   break;
                 }
                 if(weiter){
                  location.href="http://www.link1.de";
                 }
                </script>

                is vielleicht extrem umständlich - sollte aber tun, was du willst.

                liebe Grüße aus Berlin
                lina-

                --
                Self-Code: ie:% fl:( br:^ va:) ls:/ fo:| rl:( ss:) de:] js:| mo:)
                1. Hallo Lina,
                  vielen Dank.
                  Ich werde das gleich testen :-)
                  Grüsse,
                  Thomaschek

                2. Hallo Lina,
                  irgendwie funktioniert das nicht. Ich bekomme immer einen JavaScript Error. Den Debugger kann ich hier nicht einschalten weil die Browsersettings nicht änderbar sind :-(
                  Grüsse,
                  Thomascheck

                  1. Hallo Thomaschek,

                    ersetze mal bolean durch var. Dann lass den Index bei 0 starten, gib dem Script das Attribut type="text/javascript", und wenn es dann noch nicht klappt, poste, was du gebastelt hast und beschreibe den Fehler.

                    Gruß, Jürgen

                    1. Hallo Jürgen,
                      als ich habe es nun laufen lassen! Aber egal welchen Wert check_name annimmt. Es wird immer die Seite geöffnet. Ich dachte das Script vergleicht den gesamten Array. Uff. Also wenn ich der Variable check_name den Wert HANS zuweise wie im Script dann hätte ich gedacht, dass das Script abbricht. Tut es aber nicht.
                      Hier mal mein Testauszug:

                      <html>

                      <head>
                      <meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
                      <title>Neue Seite 1</title>
                      </head>

                      <body>

                      <script type="text/javascript">
                       var check_name = 'HANS';
                       var daten = new Array();
                       daten[0] = "HANS";
                       daten[1] = "MEIER";
                       daten[2] = "THOMAS";
                       var weiter=true;
                       for(i=1;i<daten.length;i++)
                       if (daten[i] == check_name) {
                         weiter=false;
                         break;
                       }
                       if(weiter){
                        location.href="http://www.google.de";
                       }
                      </script>

                      </body>

                      </html>

                      Viele Grüße,
                      Thomaschek

                      1. Hallo Thomaschek,

                        for(i=1;i<daten.length;i++)

                        ^
                        du musst auch alle Elemente prüfen, also lass die Schleife mit 0 beginnen.

                        Gruß, Jürgen

                3. Das erklärt einiges...

                  oh da muss ich mich mal wieder einmischen.

                  <script language="JavaScript">

                  Eigentlich sollte dir doch bekannt sein, das hier das type Attribut fehlt und das language Attribut lange schon veraltet ist.

                  var check_name = 'HANS';
                  var daten = new Array();
                  daten[1] = "HANS";
                  daten[2] = "MEIER";
                  daten[3] = "THOMAS";

                  Warum du das Array bei 1 anfängst ist dein Geheimnis. Arrays fangen immer bei null an.

                  boolean weiter=true;

                  Das Schlüsselwort boolean gibt es nicht, du meinst var

                  for(i=1;i<daten.length;i++)

                  Vor allem Schleifen Variabeln solltest du nie Global machen!!!

                  </script>

                  is vielleicht extrem umständlich - sollte aber tun, was du willst.

                  naja, umständlich und etwas flasch.

                  Also das ganze nochmal

                    
                  <script type="text/javascript">  
                  var check_name = 'HANS';  
                  var daten = [ "HANS", "MEIER", "THOMAS" ];  
                  for(var i = 0; i < daten.length; i++ )  
                  {  
                      if( daten[i] == check_name)  
                      {  
                           window.location.href="http://www.google.de";  
                           break;  
                      }  
                  }  
                  </script>  
                  
                  

                  Struppi.

                  --
                  Javascript ist toll (Perl auch!)
                  1. Hallo Struppi,
                    vielen Dank! Ich habe Dank diesem Script so viel gelernt.
                    Dankeschön,
                    Thomaschek

              2. hi,

                Das Javascript soll das gesamte Array durchschauen und prüfen ob der Wert der Variable check_name drin vorkommt. Es soll quasi nur einmal durhlaufen werden. Wenn es keinen vergleichbaren Wert findet soll sich die Seite öffnen. Sollte aber mindestens 1 Wert aus dem Array dem Inhalt der Variable check_name entspechen soll nichts passieren.

                Gehe vor dem Durchlaufen des Arrays davon aus, dass du nichts findest:

                var gefunden = false;

                Dann kommt deine Schleife über die Elemente des Arrays.

                schleife(über Array) {
                  wenn (arrayelement[i] gleich gesuchterWert) {
                    gefunden = true;
                    break; // Schleifenverarbeitung abbrechen, ob's noch öfter gefunden wird, ist ja uninteressant
                  }
                }

                Und anschließend machst du die Weiterleitung von dem Wert abhängig, der jetzt in gefunden steht - wenn nicht gefunden, dann Weiterleitung.

                gruß,
                wahsaga

                --
                /voodoo.css:
                #GeorgeWBush { position:absolute; bottom:-6ft; }
                1. Hallo Wahsaga,
                  vielen Dank - ich werde das zusammen mit dem Tipp von Lina ausprobieren. Dankeschön :-)
                  Grüße,
                  Thomaschek

  2. moin Thoamschek :)

    Weiss jemand Rat?

    Ich verstehe deine Frage noch nicht ganz - habe aber ein paar Hinweise für dich:
    1. Arrays fangen immer beim Index 0 an ;) Was du dort machst ist zwar nicht unbedingt falsch (berichtigt mich wer, falls es doch ein Fehler ist, den ersten Eintrag im Array einfach leer zu lassen) - aber besonders schön ist das nicht!

    2. Wenn bei der else-Anweisung nichts passieren soll - schreib halt nichts rein ;) Fragezeichen bringen bestimmt nen Syntax-Fehler *G* Wenn nichts passieren soll, brauchst du aber auch keine Anweisung dafür. Also lass den else-Teil einfach weg.

    Nun zu deinem  eigentlichen Problem:
    Das script was du da zusammengeschrieben hast, sieht auf den ersten Blick nicht völlig falsch aus. In wie fern verhält es sich anders als du es erwartest?
    Ein wenig mehr Information wird schon nötig sein.

    <script language="JavaScript">
    var check_name = 'wird automatisch generiert'
    var daten = new Array();
    daten[1] = "HANS";
    daten[2] = "MEIER";
    daten[3] = "THOMAS";
    for(i=1;i<daten.length;i++)
    if (daten[i] != check_name) {
    location.href="http://www.link1.de";
    }
    else {

    ??????????????????????

    }
    </script>

    liebe Grüße aus Berlin
    lina-

    --
    Self-Code: ie:% fl:( br:^ va:) ls:/ fo:| rl:( ss:) de:] js:| mo:)
  3. Hallo Thoamschek,

    zusätzlich zu Linas Bemerkungen:

    ... Wenn dieses Variable den Inhalt des Array "daten" hat soll auf eine andere Seite verzweigt werden. ...

    if (daten[i] != check_name) {
    location.href="http://www.link1.de";

    warum prüfst Du Gleichheit mit "!="?

    Gruß, Jürgen

    1. Hallo Jürgen,

      Mist es muss heissen "Wenn dieses Variable NICHT den Inhalt des Array "daten" hat soll auf eine andere Seite verzweigt werden. "

      Uff. Ich habs einfach übersehen.
      Gruß,
      Thomaschek