Soulfly: Seite neu laden

Hallo,
ich bringe mir grade selber javascript bei(javscript in 21 Tagen) und habe im Workshop nun die aufgabe rumzuspielen. Also Spiel ich so rum und stoße auf ein Problem.
Wie kann ich den Browser dazu veranlassen, die aktuelle Seite neu zu laden.
Es geht darum Felder zu entleeren, um neue Berechnungen durchzuführen, hauptsächlich aber Momentan darum, diesen Befehl rauszubekommen, um eine Seite neu zu laden.
Danke für Hilfe
Fly

  1. Hi Soulfly,

    Wie kann ich den Browser dazu veranlassen, die aktuelle Seite neu zu laden?

    Durch location.reload().

    Es geht darum Felder zu entleeren, um neue Berechnungen durchzuführen, hauptsächlich aber Momentan darum, diesen Befehl rauszubekommen, um eine Seite neu zu laden.

    afaik behalten manche Browser die Werte bei einem Neuladen - da müsstest du dann eventuell location.replace() nehmen (eine Art Sonderform von location.href).

    Um aber ein Formular zu reseten (das was auch bei einem Klick auf einen <input type="reset"> Button geschieht) gibt es eine Möglichkeit ein Reset zu „simulieren” - mittels der Methode reset().

    MfG, Dennis.

    --
    Mein SelfCode: ie:{ fl:( br:> va:) ls:[ fo:) rl:( n4:# ss:) de:] js:| ch:{ sh:( mo:} zu:|
    Auf viele Fragen weiß auch Wikipedia eine Antwort.
    1. Hallo,
      DAnke schon mal für die Hilfe, bin ein Stück weiter gekommen.
      Doch nun fragt er immer nach einem Objekt.
      Ich poste mal hier den momentanen Code,
      falls das nicht hier hingehört, solls der Admin wieder rausscheißen.

      <html>
      <head>
      <script language ="javascript">
      <!--
      var ergebnis;
      function nochmal()
      {
      location.replace('übung1.html');
      }
      function change()
      {
      ergebnis=document.forms[0].elements[0].value * document.forms[0].elements[1].value;
      alert(ergebnis);
      document.write("<input type='button' value='nochmal' onclick='nochmal()'>")
      }

      //-->
      </script>
      </head>
      <body>
      <form name="rechnung">
      <input>
      <input>
      <input type="button" value="fertig" onclick="change()"></button><br>
      </form>
      </body>
      </html>

      Das ist wie gesagt für mich Spielerei zum Üben und um zusammenhänge zu erkennen.
      Hilfe jederzeit Willkommen.
      Danke
      Gruß
      Soulfly

      1. Hi Soulfly,

        Gehen wir das mal Schritt für Schritt durch:

        <html>

        Das ist schon mal falsch - zu Beginn eines HTML Documents muss die DOCTYPE Angabe stehen.

        <head>
        <script language ="javascript">

        Da solltest du mal noch das Leerzeichen vor = wegmachen.

        <!--

        Der Kommentar schadet nicht - brauchen tut man ihn heute aber nicht mehr.

        var ergebnis;
        function nochmal()
        {
        location.replace('übung1.html');
        }

        Das sieht gut aus - sollte eigentlich auch ohne weiteres funktionieren.

        function change()
        {
        ergebnis=document.forms[0].elements[0].value * document.forms[0].elements[1].value;
        alert(ergebnis);
        document.write("<input type='button' value='nochmal' onclick='nochmal()'>")
        }

        Das kann so gar nicht funktionieren - durch document.write _ersetzt_ du das vorhandene HTML Dokument durch das was du schreibst (sofern der Befehl nicht beim Laden der Seite schon ausgeführt wird, was hier ja aber nicht der Fall ist.)

        Mache es lieber so: Du hast von Anfang an beide Buttons da, den zweiten jedoch über CSS mit display:none ausgeblendet:

        function change()
        {
          ergebnis = document.forms[0].elements[0].value
                     * document.forms[0].elements[1].value;
          alert(ergebnis);
          document.forms[0].elements[3].style.display = "inline";
        }

        //-->
        </script>
        </head>
        <body>
        <form name="rechnung">
        <input>
        <input>

        Das ist so nicht gültig - für ein input muss immer ein type mit angegeben werden - du verlässt dich hier auf die Gutmütigkeit eines Internet Explorers da ein Textfeld anzuzeigen.

        <input type="text" name="wert1" size="20">
        <input type="text" name="wert2" size="20">

        <input type="button" value="Berechnen" onclick="change()"></button><br>

        Wie kommst du auf die Idee ein durch <input> eingeleitetes Element mit </button> schließen zu wollen? Ein Input-Element hat keinen EndTag.

        Hier müsste dann jetzt noch unser zweiter Button rein:
        <input type="button" value="Zurücksetzen" style="display:none" onClick="nochmal()">

        Aber das ist eigentlich völlig überflüssig - warum nimmst du nicht einfach einen normalen Reset Button? Dann brauchst du die Funktion nochmal() gar nicht mehr:
        <input type="reset" value="Zurücksetzen" style="display:none">

        </form>
        </body>
        </html>

        Das ist OK so ;-)

        Probiers mal aus - habs jetzt noch nicht getestet, müsste aber eigentlich so funktionieren. Sonst ist SelfHTML auch immer eine willkommene Hilfe für dich.

        MfG, Dennis.

        --
        Mein SelfCode: ie:{ fl:( br:> va:) ls:[ fo:) rl:( n4:# ss:) de:] js:| ch:{ sh:( mo:} zu:|
        Das Motto des SELFForums ist das _self_made, also das selbermachen. Deshalb sollte man bevor man irgendetwas fragt, immer erst öffentliche Quellen zu Rate ziehen!
        1. Hi,
          erstmal Danke für Deine Hilfe, es funzt einwandfrei.
          Muss aber gestehen, dass ich es im Prinzip abgeschrieben habe.
          Verstand hab ich ca 80 Prozent.
          Was mir noch unklar ist, ist die Zeile:

          document.forms[0].elements[3].style.display = "inline";

          document.--> ist klar
          forms[0].--> klar, Bezug zum Formular 0
          elements[3]--> Welches ist hier gemeint?
          ----> und der rest der Zeile ist mir auch nicht ganz klar.

          Wenn meine Fragerei zu weit geht, brauchste nicht mehr posten, mit meinem Grundproblem hast Du mir geholfen.

          Ansonsten muß ich sagen, respekt, Deine Aufarbeitung meines Codes ist super.
          Danke
          Gruß Soulfly

          1. Hi Soulfly,

            document.forms[0].elements[3].style.display = "inline";

            document.--> ist klar
            forms[0].--> klar, Bezug zum Formular 0
            elements[3]--> Welches ist hier gemeint?

            Wir haben jetzt ja folgendes Formular:

            <form name="rechnung">
            <input type="text" name="wert1" size="20">
            <input type="text" name="wert2" size="20">
            <input type="button" value="Berechnen" onclick="change()">
            <input type="reset" style="display:none">
            </form>

            elements[0] und elements[1] sind die ersten beiden Elemente, also die ersten beiden Textfelder. elements[2] ist dann das nächste Element, sprich der erste Button. Logischerweise ist dann elements[3] der zweite Button.

            ----> und der rest der Zeile ist mir auch nicht ganz klar.

            Mit .style greifst du auf das Style Attribut des Input Tags zu - das geht übrigens bei jedem HTML Tag, für das du eine Style-Attribut definieren kannst.

            Innerhalb dieses Objekts kann man auf die CSS Eigenschaften zugreifen - lies dazu http://de.selfhtml.org/javascript/objekte/style.htm. Was ich gemacht habe: Der Button existiert von Anfang an - standardmäßig ist er erst mal per CSS ausgeblendet. Per Klick wird dann die CSS Eigenschaft geändert, so dass der Button sichtbar wird - Voilà!

            Wenn meine Fragerei zu weit geht, brauchste nicht mehr posten, mit meinem Grundproblem hast Du mir geholfen.

            Das ist schon gut so - du fragst ja schließlich hier, damit du auch etwas lernst ;-)

            Ansonsten muß ich sagen, respekt, Deine Aufarbeitung meines Codes ist super.

            Ein sauberes Einrücken des Codes ist immer empfehlenswert und wenn man mit mehreren Leuten zusammen an einem Projekt arbeitet unerlässlich.

            MfG, Dennis.

            --
            Mein SelfCode: ie:{ fl:( br:> va:) ls:[ fo:) rl:( n4:# ss:) de:] js:| ch:{ sh:( mo:} zu:|
            Das Motto des SELFForums ist das _self_made, also das selbermachen. Deshalb sollte man bevor man irgendetwas fragt, immer erst öffentliche Quellen zu Rate ziehen!