Peter Gundermann: Variablen-Problem

Hallo,
ich habe hier ein Problem; da ich noch nicht lange 'programmiere', komm ich ´mit meinen Variablen nicht ganz klar, bzw. die Addition und/oder Übergabe klappt nicht ganz.
Ich habe vor, eine Seite zu erstellen, in der die Seiten im Hauptframe mit Hilfe JavaScript hoch- bzw. runtergezählt werden können. Gleichzeitig sollte eine direkte Seitenansteuerung da sein. Ich habe mir also folgendes Script zusammengebastelt:
<script type="text/JavaScript">
<!--
   var current = 0
   var a = "abizeitung"
   var b = ".pdf"
   var url =
     function checkIt(val) {
       if (val == -1) {
       current = Math.abs(current+parseInt(val));
       }
       else if (val == +1) {
       current = Math.abs(current+parseInt(val));
       }
       else if (val == 0) {
       var current2 = window.prompt("Direkt auf Seite:",[current]);
       current = current2
       }
       url = a +[current]+b;
       parent.daten.location.href = url;
    }
//-->
</script>

Das Hoch/Runterzählen klappt schon, auch die Direktansteuerung funkt. Allerdings wird nach dem Direktansteuern mit Seite Hoch/Runter nicht um 1, sondern auf die x*10+1 te Seite weitergezählt; scheinbar addiert das script nun z.B. 6+1 = 61
Hat jemand 'ne Ahnung? Wäre irgendwas in die Richtung ++1 / --1 möglich?

Danke im Voraus, Peter

  1. Hallo,

    • steht in JavaScript nicht nur für eine Addition sondern auch für eine Verknüpfung bei Strings. Wenn also einer der Werte als String interpretiert wird hängt er die beiden zusammen, also ist 6+1=61.

    Schreib die Addition einfach in ein eval() um sicher zu gehen:

    eval(6+1)=7

    Viele Grüße,
    Jürgen

    1. Danke soweit, hab ich gemacht.
      Es funktioniert auch; allerdings nur zur Hälfte: Ich geb Seite 5 ein; geh ich dann 1 Seite zurück, funktionierts. will ich allerdings eine Seite weiter, dann gehts wieder zu 51.
      die Zeile schaut nun so aus:
      current = eval(current+parseInt(val));
      kommt evtl. noch was dazu?

      1. Hallo.

        Wie wär's denn statt...

        current = eval(current+parseInt(val));

        ...mit current+=val?

        kommt evtl. noch was dazu?

        Ja, ein Link: http://selfhtml.teamone.de/javascript/sprache/operatoren.htm#berechnung

        Gruß
        Norbert

        1. Danke für den Tip; leider keine Änderung.
          Ich hab nun auch mal 2 IF ELSE Schleifen verknüpft; bringt leider auch kein Erfolg. Zurück geht's, vorwärts addiert er nur die Ziffern.
          Das Ganze schaut nun so aus:

          if (val == 0) {
          var current2 = window.prompt("Direkt auf Seite:",[current]);
          current = current2;
          }
          else {
           if (val == -1) {
                  current-=1;
           }
           else {
           current+=1;
           }
          }

          Habs mittlerweile mit jeglichem Operator versucht, auch die Reihenfolge sowohl im Scipt als auch bei den Links geändert - ohne Erfolg.

  2. Hallo Peter,

    var current2 = window.prompt("Direkt auf Seite:",[current]);

    liefert einen String und keine Zahl! Mit

    var current2 = eval(window.prompt("Direkt auf Seite:",[current]));

    ist auch current2 eine Zahl un dann sollte es gehen.

    Gruß,    Jürgen

    1. Vielen vielen Dank!
      Hat geholfen und es funktioniert!

      MfG, Peter