Mika: Variable innerhalb einer alert-Anweisung inkrementieren

Hallo Zusammen,

ich habe folgende Frage:

wie muss die Syntax aussehen wenn ich eine Javascript Variable innerhalb einer Alert-Anweisung inkrementieren bzw dekrementieren will?

i=0
alert("Fehlende Artikelnummer in Position "+i+1);

würde man es so schreiben, erhält man folgende Ausgabe:

"Fehlende Artikelnummer in Position 01"

muss man das 2.Pluszeichen vielleicht maskieren???

Gruß

Mika

  1. Hi,

    • hat in Javascript 2 Bedeutungen: Zusammenhängen von Strings und Addieren von Zahlen.

    i=0
    alert("Fehlende Artikelnummer in Position "+i+1);

    Wegen des Strings wird zuerst per + i der Wert von i an den String angehängt, danach die 1 an den String.

    Wenn Du die Operator-Reihenfolge ändern willst, nutze Klammern, damit zuerst die Addition erfolgt und dann erst das Anhängen an den String.

    cu,
    Andreas

    --
    Warum nennt sich Andreas hier MudGuard?
    O o ostern ...
    Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
  2. i=0;
    alert("Fehlende Artikelnummer in Position "+(i+1));

    So gehts bei mir. beachte das die Variable i danach nach wie vor den Wert 0 hat. Wenn sie hinterher 1 sein soll, nimm

    alert("Fehlende Artikelnummer in Position "+(++i));

    Allerdings würde ich allgemein empfehlen, erst zu verarbeiten und dann auszugeben, das macht den Code verständlicher.

    also z.B.
    i = 0;
    i++;
    alert(i);

    1. Hi,

      also mit der Klammer funktioniert es wunderbar,
      nur gibt er mir das alert 2 mal aus....

      hier ein ausschnitt des quellcodes:

      function checkAll(){
        counter = activeRows;
        if(counter != row_limit){
          counter--;
        }

      for(i = 0; i <= counter; i++){
          if(document.getElementById("artnr"+i).value == ""){
            alert("Fehlende Artikelnummer in Position "+(i+1));
            i--
            document.getElementById("artnr"+i).focus();
            i=-1;
          }
        }
      }

      1. Hi,

        also mit der Klammer funktioniert es wunderbar,
        nur gibt er mir das alert 2 mal aus....

        Nur 2mal?

        for(i = 0; i <= counter; i++) {
            if(document.getElementById("artnr"+i).value == "") {

        Beim ersten leeren artnrX Feld passiert also was.

        alert("Fehlende Artikelnummer in Position "+(i+1));
              i--

        Seltsam. Das Feld, welches fehlt, ist das mit Nummer i.
        Wegen des i-- setzt Du hier aber

        document.getElementById("artnr"+i).focus();

        den Fokus auf ein ganz anderes Feld.

        i=-1;

        Wenn das Alert ausgegeben wird, setzt Du i auf -1. i ist damit kleiner als counter, also geht's in der Schleife wieder von vorne los,
        bis wieder das erste artnrX erreicht wird, das leer ist. In diesem Fall wird i wieder auf -1 gesetzt, so daß es wieder von vorne losgeht ...

        cu,
        Andreas

        --
        Warum nennt sich Andreas hier MudGuard?
        O o ostern ...
        Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
      2. function checkAll(){
          counter = activeRows;
          if(counter != row_limit){
            counter--;
          }

        for(i = 0; i <= counter; i++){
            if(document.getElementById("artnr"+i).value == ""){
              alert("Fehlende Artikelnummer in Position "+(i+1));
              i--
              document.getElementById("artnr"+i).focus();
              i=-1;
            }
          }
        }

        Zweimal? mich wundert dass es keine Endlosschleife gibt, wenn Du die Zählvariable in der Schleife immer zurück setzt.

        Vielleicht kannst Du mal etwas allgemeiner beschreiben was Du eigentlich erreichen willst. Wozu dieses ständige hoch und runter mit dem i??