Patrick: do-while-Schleife

Hallo,

ich habe ein Problem und zwar sehe ich in folgendem Java-Script Code den Fehler nicht.

Kann jemand helfen?

Danke.

Patrick

<!DOCTYPE HTML>
<html lang="de">
<head>
<meta charset="utf-8">
<title>die do-while-Schleife</title>
<link href="style-6-1.css" rel="stylesheet">
</head>
<body>
<h1>3 X raten</h1>
<section class="fragebox">
<h3>Wer war als erste/r im All?:</h3>
<p id="raten"><a href="#" onclick="schreibwas()">Hier raten</a></p>
<p id="ergebnis"></p>
</section>

<script>
function schreibwas() {
  var count = 3;
  var antwort1 = "Laika";
  var antwort2 = "Juri Gagarin";
  var antwort3 = "3 x falsch";
}	
do {
  count <= 3 {
  var eingabe = prompt(count + ". Versuch. Wie hieß der erste Erdbewohner im All:","");
  }
  if ( eingabe == antwort2 ) {
    alert ("Fast richtig, Sie dürfen noch einmal raten");
    continue;
  }
  if ( eingabe == antwort1 ) {
    document.getElementById("ergebnis").innerHTML = "Richtig";
    break;
  }
  if ( eingabe == antwort3 ) {
    document.getElementById("ergebnis").innerHTML = "3 x mal Falsch";
    break;
  } 
  while ( eingabe != antwort1 ) {
    document.getElementById("ergebnis").innerHTML = "3 × falsch";
  }
}
</script>

</body>
</html>

Edit Rolf B: ~~~ als Codebegrenzer gesetzt, Einrückungen erstellt

akzeptierte Antworten

  1. Hallo Patrick,

    ich auch nicht, deshalb habe ich erstmal ~~~html davor gesetzt und ~~~ dahinter. Und dann habe ich den Code sinnvoll eingerückt. Und schon wird er lesbarer.

    function schreibwas() {
       ...
    }
    do {
      count <= 3 {
    

    (1) darf vor das do kein }, sonst ist die schreibwas-Funktion zu Ende und die Do-Schleife steht im globalen Code. Heißt: sie läuft sofort los, ohne auf den Klick zu warten. Aber die Variablen sind dann nicht definiert, weil die nur innerhalb von schreibwas gültig sind.

    (2) do { count <= 3 { ist Phantasiesyntax. Hier steht die richtige

    (3) Handling von count. prompt(count + ". Versuch") wird bei 3 anfangen und bei 3 bleiben, weil Du count auf 3 initialisierst und nie änderst

    Ist es Absicht, dass ich bspw. als ersten Versuch "Buck Rogers", als zweiten Versuch "John Glenn", als dritten Versuch "Juri Gagarin" eingebe und dann ein "Fast Richtig, Sie dürfen nochmal raten" erhalte? Und dann Laika als Viertes eingeben darf? Wenn ja, ist das continue an dieser Stelle ok, andernfalls nicht.

    Rolf

    --
    sumpsi - posui - obstruxi
    1. Servus!

      Hallo Patrick,

      Hier ist ein Tutorial zu Quizzen mit JavaScript:

      Vielleicht kannst du etwas damit anfangen.

      Herzliche Grüße

      Matthias Scharwies

      --
      Die Signatur findet sich auf der Rückseite des Beitrags.
    2. Vielen Dank dir.

  2. @@Patrick

    ich habe ein Problem und zwar sehe ich in folgendem Java-Script Code den Fehler nicht.

    Die Fehler. Da sind noch welche, die bislang noch niemand anderes gesehen hat:

    <h1>3 X raten</h1>
    <section class="fragebox">
    <h3>Wer war als erste/r im All?:</h3>
    

    h3 ist falsch; es sollte h2 sein – wenn es denn überhaupt eine Überschrift ist. Sieht mir nicht danach aus.

    Jedenfalls sollten Überschriften-Ebenen nicht übersprungen werden[1], nach 1 kommt 2, nicht 3.

    Und wo wir bei 1 sind: Willst du uns ein X für ein Mal vormachen? Das Mal-Zeichen ist ×, in HTML auch als &times; verfügbar.

    <a href="#" onclick="schreibwas()">
    

    href="#" ist immer ein ziemlich sicheres Zeichen für falsches Markup. Das ist kein Link zu einer anderen Stelle, sondern ein Button zum Ausführen einer Aktion. a ist falsch; es sollte ein button-Element sein.[2] Per CSS kannst du dem das gewünschte Aussehen geben.

    Kwakoni Yiquan

    --
    Ad astra per aspera

    1. Heading ranks ↩︎

    2. Buttons vs. Links. No, they are not the same von Eric Eggert ↩︎