Jan: Funktionen

Hallo,
Folgendes Problem: In einer Funktion gibt es eine einfache Fallunterscheidung mit "if" und "else", je nach fall soll eine weitere Funktion aufgerufen werden, diese Funktionen sollen jeweils eine Zahl um 1 erhöhen und den wert auf die die Seite schreiben, das sieht dann auszugsweise so aus:

<head>
<script language="JavaScript">

function plus()
  {
   var count = document.getElementById('plus');
   var richtig = document.getElementById('plus').innerHTML;
   richtig = +1;
   count.innerHTML = richtig;
  }

function minus()
  {

var count = document.getElementById('minus');
   var richtig = document.getElementById('minus').innerHTML;
   richtig = +1;
   count.innerHTML = richtig;
  }
</script>
</head>
<body>
Richtig: <div id="plus">0</div>
Flasch: <div id="minus">0</div>
</body>

Das Problem ist, es wird zwar von 0 auf 1 hochgezählt aber danach rührt sich einfach nichts mehr, die Seite wird auch nicht neu geladen sondern es werden sonst nur Styles von Divs verändert.

  1. Hi,

    du zählst ja auch nicht hoch, sondern setzt den Wert auf die absolute Zahl 1. Das plus ist wie in der Mathematik nur ein Vorzeichen.
    Zum Zählen musst du schon sagen:

    richtig++;

    oder richtig = richtig + 1;

    MfG,
    fwap

    1. Lieber fwap und lieber Jan,

      richtig++;

      oder richtig = richtig + 1;

      genau!

      Ausserdem sollte man den Javascript-Code etwas "aufräumen"!

      var count = document.getElementById('plus');
        var richtig = document.getElementById('plus').innerHTML;

      Das geht einfacher:

      var count = document.getElementById('plus');  
      var richtig = count.innerHTML;
      

      Das hast Du ja dann zwei Zeilen weiter unten selbst auch schon verwendet. Warum dann hier nicht? ;-)

      Liebe Grüße aus Ellwangen,

      Felix Riesterer.

      1. Hallo Felix,

        innerHTML gehört nicht zum Standard und wird auch nicht von allen Browsern unterstützt. Gerade die MACs älterer Art, von denen noch viele im Einsatz sind, haben da ihre Probleme, die bis zum Absturz des Browsers führen können. Daher sollte man innerHTML nur benutzen, wenn der Aufbau eines komplizierten DOM-Baumes mit createElement etc. zu kompliziert ist. Außerdem muss das Vorhandensein von innerHTML abgefragt werden, und eine Prüfung auf MAC und IE erfolgen.

        Bei einem so einfachen DOM-Zugriff wie das Ändern eines Textknotens kann ich von innerHTML nur abraten. Die wenigen Zeichen, die eingespart wurden, sind teuer erkauft.

        Gruß, Jürgen

        1. Lieber Jürgen,

          Bei einem so einfachen DOM-Zugriff wie das Ändern eines Textknotens kann ich von innerHTML nur abraten. Die wenigen Zeichen, die eingespart wurden, sind teuer erkauft.

          Habe aus Deiner Antwort Wesentliches dazugelernt. Danke!

          Liebe Grüße aus Ellwangen,

          Felix Riesterer.

    2. Tag fwap.

      du zählst ja auch nicht hoch, sondern setzt den Wert auf die absolute Zahl 1. Das plus ist wie in der Mathematik nur ein Vorzeichen.

      Soweit korrekt.

      oder richtig = richtig + 1;

      Falsch. Das Pluszeichen ist nicht nur ein mathematischer Operator, sondern auch ein Operator, um Zeichenketten zu verknüpfen. Das Ergebnis von innerHTML ist von Haus aus ein String, an den du mit deiner Anweisung eine 1 dranhängst. Die automatische Typumwandlung kommt nur dann zum Tragen, wenn der Operator eindeutig einem bestimmten Typ zugeordnet werden kann, was im Falle von '+' eben nicht so ist. Wird hingegen '++' verwendet (wie ja auch von dir vorgeschlagen), ist eindeutig, dass Javascript etwas vom Typ Zahl erwartet und die Typumwandlung greift.

      Siechfred

      --
      Everybody's going to the party have a real good time,
      Dancing in the desert blowing up the sunshine.
    3. Hallo,
      Vielen dank,  mit "richtig++;" klappts. Aber wenn man richtig = richt +1 macht setzt er einfach eine Zahl hinten dran ist auch net sinn und zwecke der Sachen ;),

      gruß,
      Jan

      1. Hallo,

        Aber wenn man richtig = richt +1 macht setzt er einfach eine Zahl hinten dran

        weil "richtig" ein String ist. Mit richtig = parseInt(richtig) +1 sollte es gehen.

        Gruß, Andreas

        --
        SELFFORUM - hier werden Sie geholfen,
        auch in Fragen zu richtiges Deutsch