Corinna: Hilfe bei alert-Anweisung

Hi! Kann mir bitte jemand aus der Krise helfen??? Seit heute Nachmittag um 14.00 sitze ich an dieser Aufgabe und wenn mir heute abend keiner mehr sagen kann wie die Lösung ist, dann kann ich nicht schlafen, weil mich das zu sehr wurmt.
Please help!

Erweitern Sie das Programm so, dass es in der Alert-Box nicht nur ein Passwort sondern 10 (möglichst verschiedene) Passwörter anzeigt.
Tip: Erzeugen Sie 10 Zeilen mit Passwörtern in der String-Variablen "pw

<html>
<head>
<title>Passwort-Erzeugung</title>

<script type="text/javascript">

function passwort () {
  var s = document.Formular.Eingabe.value;
  var zaehler = 0;
  var pw = "";

var pos;
  while (zaehler < 8) {
    pos = Math.random() * s.length;
    pw = pw + s.charAt(pos);
    zaehler = zaehler + 1;
  }
  alert(pw);
}

</script>
</head>

<body>
<form name="Formular" action="">
Buchstaben: <input type="text" name="Eingabe" size="12">
<input type="button" value="Passwort erzeugen" onClick="passwort()">
</form>
</body>
</html>

  1. Hi! Kann mir bitte jemand aus der Krise helfen??? Seit heute Nachmittag um 14.00 sitze ich an dieser Aufgabe

    Corinna,

    Dann zeig doch mal deine Versuch der letzten neun Stunden und was daran nicht geht.

    und wenn mir heute abend keiner mehr sagen kann wie die Lösung ist, dann kann ich nicht schlafen, weil mich das zu sehr wurmt.

    Hört sich eher so an, dass du du nicht schlafen kannst, weil du die Hausaufgabe bis morgen brauchst.

    Gunnar

    --
    „Solang wir noch tanzen können
    und richtig echte Tränen flennen,
    ist noch alles offen,
    ist noch alles drin.“
    (Gundermann)
    1. Na ihr seid ja wirklich toll. Ich hab bis jetzt das ganze Script verändert und bin soweit, dass 10 gleiche Passwörter auf einer neuen Seite ausgegeben werden, aber eben nicht in dem alert-fenster. Nee, die würde ich auch so abgeben, aber da ich Informatik als Nebenfach studiere und auch was lernen möchte und mein Prof mir die Lösung nicht geben wird, will ich es einfach wissen.

      1. Corinna,
        Um den Passwort-Generator eine Schleife zu binden, wirst ja hinbekommen.

        In das alert-Fenster kannste nur einmal schreiben, also musste die 10 Passwörter zwischenspeichern, entweder in einem Array oder in einer Stringvariablen (einfacher).

        Und nach dem 10. Schleifen durchlauf gibste alles aus.

        Gunnar

        --
        „Solang wir noch tanzen können
        und richtig echte Tränen flennen,
        ist noch alles offen,
        ist noch alles drin.“
        (Gundermann)
        1. Danke...Aber ich komme trotzdem nicht weiter und in der Referenz kann ich einfach nichts über die blöde Stringvariable finden, denn genau das ist mein Problem...Das ich mir nicht erklären, wir ich die Variable am besten verändern kann. Ich habe es schon mit der for-Schleife probiert um die Funktion, dann mit der while-Schleife. Wahrscheinlich ist das viel zu einfach nur ich denke zu kompliziert.

          1. Corinna,

            Ich habe es schon mit der for-Schleife probiert um die Funktion, dann mit der while-Schleife.

            Die FOR-Schleife ist angebracht, wenn die Anzahl der Schleifendurchgänge vor Eintritt in die Schleife feststeht, was hier der Fall ist. Die WHILE-Schleife hingegen bei einem anderen Abbruchkriterium.

            var zaehler = 0;
              while (zaehler < 8) {
                zaehler = zaehler + 1;
              }

            macht dasselbe wie

            for (zaehler = 0; zaehler < 8; zaehler = zaehler + 1) {}

            oder besser

            for (zaehler = 0; zaehler < 8; zaehler++) {}

            Noch eine FOR-Schleife, die (mit einer anderen Zählvariablen!) bis 10 zählt außenrum ...

            Haste das mit <?t=99803&m=610312@ziegenmelkers Hinweis> jetzt geschafft?

            Gunnar

            --
            „Solang wir noch tanzen können
            und richtig echte Tränen flennen,
            ist noch alles offen,
            ist noch alles drin.“
            (Gundermann)
        2. In das alert-Fenster kannste nur einmal schreiben,

          Wofür das Auszugebende in einer Stringvariablen stehen muss ...

          also musste die 10 Passwörter zwischenspeichern, entweder in einem Array oder in einer Stringvariablen (einfacher).

          ... also vergiss das mit dem Array hier.

          Gunnar

          --
          „Solang wir noch tanzen können
          und richtig echte Tränen flennen,
          ist noch alles offen,
          ist noch alles drin.“
          (Gundermann)
      2. Huhu Corinna

        Na ihr seid ja wirklich toll.

        Genau, das wissen alle die länger im Forum dabei sind ;-)

        Du hast ein Passwort als String vorliegen.
        Die Ausgabe erfolgt als Alert.
        Im Alert gibst Du einen String aus.

        Jetzt hast Du zehn Passwörter und also auch 10 Strings.
        Die möchtest Du als ein Alert ausgeben.
        Du musst also aus 10 Strings einen machen.

        Schau mal in der JavaScript Referenz in selfhtml nach.
        Dort solltest Du etwas passendes finden können.

        Da Du ja seit 14.00 Uhr dran sitzt machen die 10 Minuten jetzt auch nichts mehr aus.

        Gute Nacht

        lulu

        --
        bythewaythewebsuxgoofflineandenjoytheday
  2. moin,

    function passwort () {
      var s = document.Formular.Eingabe.value;
      var zaehler = 0;
      var pw = "";

    Deinen 'Zufallsgenerator willst Du 10 mal aufrufen.
    Also solltest Du die Variableninitialisierung so ändern:
    var s = document.Formular.Eingabe.value;
    var pw = "";
    <Hier definierst Du die äußerte Schleife, die 10 mal durchlaufen werden soll.>
    var zaehler = 0; // vor jedem Durchlauf der inneren Schleife wieder auf 0 setzen

    var pos;
      while (zaehler < 8) {
        pos = Math.random() * s.length;
        pw = pw + s.charAt(pos);

    einfacher: pw += s.charAt(pos);

    zaehler = zaehler + 1;
      }

    An dieser Stelle hast Du ein neues Passwort zu 'pw' hinzugefügt.
    Füge dem 'pw' String hier noch ein geeignetes Trennzeichen, z.B. einen Zeilenumbruch hinzu.
    pw += ......
    <Ende der äußeren Schleife>

    alert(pw);
    }

    Wie Du die äußere Schleife verwirklichst, solltest Du selbst hinbekommen.

    Gute N8,
    ziegenmelker

    1. Danke schön!!! Das kann ich verstehen und nachvollziehen!!!
      Danke!
      Auch Gute Nacht
      Corinna

    2. var zaehler = 0; // vor jedem Durchlauf der inneren Schleife wieder auf 0 setzen

      ziegenmelker,
      In welcher Sprache programmierst du? Assembler? In höheren Programmiersprachen gibt es die FOR-Schleife.

      var pos;
        while (zaehler < 8) {
          pos = Math.random() * s.length;
          pw = pw + s.charAt(pos);
          zaehler = zaehler + 1;
        }

      Auch hier wäre eine FOR-Schleife angebracht. Und die Indizes der inneren und der äußeren Schleife müssen verschiedene Bezeichnungen haben.

      Gruß,
      Gunnar

      --
      „Solang wir noch tanzen können
      und richtig echte Tränen flennen,
      ist noch alles offen,
      ist noch alles drin.“
      (Gundermann)
      1. In welcher Sprache programmierst du? Assembler?

        Ja, kann ich auch, und das seit ca. 25 Jahren ;)

        In höheren Programmiersprachen gibt es die FOR-Schleife.

        Schlaumeier! Wenn Corinna lernen will, soll sie auch mal selbst was rausfinden, oder? Und IMO gehört zum Lernen auch, daß man sich mit allen Schleifenkonstrukten mal beschäftigt.
        Btw wage ich zu bezweifeln, daß es einen signifikanten Geschwindigkeitsunterschied zwischen FOR- und WHILE-Schleifen (oder auch DO..UNTIL) gibt, ist wohl immer eine Frage des Interpreters/Compilers.

        var pos;
          while (zaehler < 8) {
            pos = Math.random() * s.length;
            pw = pw + s.charAt(pos);
            zaehler = zaehler + 1;
          }

        Auch hier wäre eine FOR-Schleife angebracht. Und die Indizes der inneren und der äußeren Schleife müssen verschiedene Bezeichnungen haben.

        Ich habe nirgendwo geschrieben, wie die innere/äußere Schleife gestaltet sein sollte und das mit den Indizes sollte Corinna schon wissen ;)
        Viel schlauer wäre übrigens der Hinweis gewesen, das man s.length nicht bei jedem Schleifendurchlauf, in der Summe 80 mal, neu berechnen sollte.

        Gruß,
        Gunnar

        cu,
        ziegenmelker

        1. ziegenmelker,

          Schlaumeier! Wenn Corinna lernen will, soll sie auch mal selbst was rausfinden, oder? Und IMO gehört zum Lernen auch, daß man sich mit allen Schleifenkonstrukten mal beschäftigt.

          Deshalb sollte man sie doch nicht auf ihrer WHILE-Schleife sitzen lassen. Besonders, weil sie vorher schon eine FOR-Schleife verwendet hatte.

          Btw wage ich zu bezweifeln, daß es einen signifikanten Geschwindigkeitsunterschied zwischen FOR- und WHILE-Schleifen (oder auch DO..UNTIL) gibt, ist wohl immer eine Frage des Interpreters/Compilers.

          Ja.

          Viel schlauer wäre übrigens der Hinweis gewesen, das man s.length nicht bei jedem Schleifendurchlauf, in der Summe 80 mal, neu berechnen sollte.

          Ja!!!

          Gruß,
          Gunnar

          --
          „Solang wir noch tanzen können
          und richtig echte Tränen flennen,
          ist noch alles offen,
          ist noch alles drin.“
          (Gundermann)