Helle: taschenrechner

ich versuche einen taschenrechner zu erstellen hier mein versuch <html>   <!--Der head abschnitt wird geöffnet-->   <head>     <!--Title wird eingefügt-->     <title>Taschenrechner     </title>     <style type="text/css">       body       {       color: #00ff00;       font-family: Comic Sans MS;       font-size: 20px;       background-color: purple;       }     </style>     <!--script tag wird geöffnet-->     <script language="JavaScript">             /eine function wird definiert/              function Ergebnis()              {                       /die lokale variable 'ergebnis' wird initialisiert und deklariert/                       var ergebnis = "0";                       /'ergebnis' wird neu initialisiert/                       ergebnis = eval(document.form1.zahlenfeld.value);                       /durch diese Befehle wird das ergebnis im 'zahlenfeld'/                       document.form1.zahlenfeld.value = ergebnis;                       /die function wird geschlossen/                       }

/*die function 'hinzufuegen' wird erstellt und ein übergebender wert wird angenommen und                als 'zeichen' gespeichert */              function Hinzufuegen(Zeichen)                       {                       /der eingegebne wert im 'zahlenfeld wird neu initialisiert +ndie variable 'zeichen'/                       document.form1.zahlenfeld.value = document.form1.zahlenfeld.value + Zeichen;                       /die function wird geschlossen/                       }

/die function'quadrat' wird definiert und der eingegebene Wert im Eingabefeld                'zahlenfeld' wird unter der Variablen 'zahl' gespeichert/                function quadrat(zahl)                {                         //Die Variable 'ergebnis' wird initialisiert und deklariert                          var ergebnis = zahl * zahl;                          //'ergebnis' wird neu initialisiert                          document.form1.zahlenfeld.value = ergebnis;                          //die function wird geschlossen                          }

/die function'dpotenz' wird definiert und der eingegebene Wert im Eingabefeld                 'zahlenfeld' wird unter der Variablen 'zahl' gespeichert/                 function dpotenz(zahl)                 {                          //Die Variable 'ergebnis' wird initialisiert und deklariert                          var ergebnis = zahl * zahl * zahl;                          //'ergebnis' wird neu initialisiertv                          document.form1.zahlenfeld.value = ergebnis;                          //die function wird geschlossen                          }      /Der script tag wird geschlossen/      </script>     <!--der haed abschnitt wird geschloosen-->   </head>   <!--der body abschnitt wird geöffnet-->   <body bgcolor=purple text=#00ff00 vlink=yellow>     <!--eine Überschrift wird eingefügt-->     <!--durch dieesen Befehl wird das eingefügte in die mitte verschoben-->     <center>       <!--eine Überschrift wird eingefügt--><h1>Taschenrechner</h1>     </center>     <!--ein neues formular wird geöffnet -->     <form name="form1">       <!--Dies ist ein Befehl damit der text überden bildschirm rollt-->       <marquee  behavior="alternate" scrollamount="10" scrolldelay="5"><h3>Hiermit können Sie alles rechnen!!!</h3>       </marquee>       <!--durch diesen Befehl wird alles in die mitte verschoben-->       <center>         <!--eine tabelle wird erstellt mit rand -->         <table border=8 cellpadding=10>           <!--eine zeile wird erstellt-->           <tr>             <!--eine Zelle die sich über 4 Spalten erstreckt wird erstellt -->             <td colspan="4" bgcolor=black >               <!--ein eingabefeld namens 'zahlenfeld' wird erstellt-->               <center>                 <input type="text" name="zahlenfeld" size=25 maxlength=30>                 <!--absatz-->                 <br>die Potenz (nur für Potenzen):                 <br>                 <!--ein eingabefeld namens 'zahlenfeld2' wird erstellt damit man die potenzen errechnen kann-->                 <input type="text" name="zahlenfeld2" size=1 </center>                 <!--eine Zelle wird geschlossen--></td>             <!--die zeile wird geschlossen-->           </tr>           <!--eine zeile wird erstellt -->           <tr>             <!--eine Zelle wird erstellt wessen Tabellenbreite 50 pixel ist -->             <td width=50 bgcolor=black>               <!--Ein button mit der aufschrift 7 wird erstellt und in die aufgerufene function                 'hinzufuegen' wird die Zahl 7 übergeben-->               <input type=button value=" 7 " onClick="Hinzufuegen('7')">               <!--die Zelle wird geschlossen--></td>             <!--eine Zelle wird erstellt wessen Tabellenbreite 50 pixel ist-->             <td width=50 bgcolor=black>               <!--Ein button mit der aufschrift 8 wird erstellt und in die aufgerufene function                  'hinzufuegen' wird die Zahl 8 übergeben-->               <input type=button value=" 8 " onClick="Hinzufuegen('8')">               <!--die Zelle wird geschlossen--></td>             <!--eine Zelle wird erstellt wessen Tabellenbreite 50 pixel ist-->             <td width=50 bgcolor=black>               <!--Ein button mit der aufschrift 9 wird erstellt und in die aufgerufene function                  'hinzufuegen' wird die Zahl 9 übergeben-->               <input type=button value=" 9 " onClick="Hinzufuegen('9')">               <!--die Zelle wird geschlossen--></td>             <!--eine Zelle wird erstellt wessen Tabellenbreite 50 pixel ist-->             <td width=50 bgcolor=black>               <!--Ein button mit der aufschrift + wird erstellt und in die aufgerufene function                              'hinzufuegen' wird das Zeichen + übergeben-->               <input type=button value=" + " onClick="Hinzufuegen('+')">               <!--die Zelle wird geschlossen-->               </td>             <!--ein Zeile wird geeschlossen-->           </tr>           <!--eine neue Zeile wird geöffnet;ab hier läuft dasselbe ab wie oben in meinen Kommentaren-->           <tr>             <td width=50 bgcolor=black>               <input type=button value=" 4 " onClick="Hinzufuegen('4')"></td>             <td width=50 bgcolor=black>               <input type=button value=" 5 " onClick="Hinzufuegen('5')"></td>             <td width=50 bgcolor=black>               <input type=button value=" 6 " onClick="Hinzufuegen('6')"></td>             <td width=50 bgcolor=black>               <input type=button value=" - " onClick="Hinzufuegen('-')"></td>           </tr>           <tr>             <td width=50 bgcolor=black>               <input type=button value=" 1 " onClick="Hinzufuegen('1')"></td>             <td width=50 bgcolor=black>               <input type=button value=" 2 " onClick="Hinzufuegen('2')"></td>             <td width=50 bgcolor=black>               <input type=button value=" 3 " onClick="Hinzufuegen('3')"></td>             <td width=50 bgcolor=black>               <input type=button value=" * " onClick="Hinzufuegen('*')"></td>           </tr>           <tr>             <td width=50 bgcolor=black>               <input type=button value=" . " onClick="Hinzufuegen('.')"></td>             <td width=50 bgcolor=black>               <input type=button value=" 0 " onClick="Hinzufuegen('0')"></td>             <td width=50 bgcolor=black>               <!--bisauf hier; hier das ergebnis aufgerufen ohne enien wert an die function 'Ergebnis' zu                   übergeben -->               <input type=button value=" = " onClick="Ergebnis()" </td>               <td width=50 bgcolor=black>                 <input type=button value=" / " onClick="Hinzufuegen('/')"></td>           </tr>           <tr>             <td width=50 bgcolor=black>               <!--das eingegebene wird an die function 'quadrat' übergeben und die function wird aufgerufen-->               <input type=button value="x²" onClick="quadrat(zahlenfeld.value)"></td>             <td width=50 bgcolor=black>               <!--das gleiche wie bei der function 'quadrat' nur mit der function 'dpotenz'-->               <input type=button value="x³" onClick="dpotenz(zahlenfeld.value)"></td>             <td with=50 colspan=2 bgcolor=black>               <center>                 <!-- hier wird ein reset button erstellt der das eingegebene löscht -->                 <input type=reset value=" Clear ">               </center></td>           </tr>           <tr>             <td with=50 colspan=2 bgcolor=black>               <center>                 <!--hier wird keine function aufgerufen sondern die Potenz wird im onclick errechnet                 durch den befehl 'math.pow' den das 2 eingebefenster benötigt damit man weiss welche                 zahl die potenz und welche die normale zahl ist -->                 <input type="button" value="Potenzen" onclick="form1.zahlenfeld.value =  Math.pow(form1.zahlenfeld.value, form1.zahlenfeld2.value)">               </center></td>             <td with=50 colspan=2 bgcolor=black>               <center>                 <!--hier wird keine function aufgerufen sondern die wurzel wird im onclick errechnet                 durch den befehl 'math.sqrt' -->                 <input type="button" value="Wurzel" onclick="form1.zahlenfeld.value =                   Math.sqrt(form1.zahlenfeld.value)">               </center></td>             <!--Die Tabelle wird geschlossen-->         </table><h2>Erstellt von:           <a href="">Jakob Bolte</a></h2>       </center>       <!--Das formular iwrd geschlossen-->     </form>     <!--Der body abschnitt wird geschlossen-->   </body>   <!--Das Programm ist zu ende -->   <html> ich muss nur noch schaffen das bei mal, plus, geteilt und minus die erste zahl verschwindet wenn ich die zweite eingebe und das ohne "if"

  1. Mahlzeit Helle,

    aus welchem Jahrtausend stammt dieser Code? Wohl eher nicht aus diesem ... Du solltest Dich dringend mit einem Validator auseinandersetzen!

    <html>
      <!--Der head abschnitt wird geöffnet-->
      <head>

    Es fehlt die Angabe eines http://de.selfhtml.org/html/allgemein/grundgeruest.htm#dokumenttyp@title=Dokumenttyps.

    <!--script tag wird geöffnet-->
        <script language="JavaScript">

    Es fehlt die Angabe des <http://de.selfhtml.org/html/referenz/attribute.htm#script@title=zwingend erforderlichen "type"-Attributs>. Du willst nicht wirklich jedes einzelne Element mit einem so nichtssagenden Kommentar versehen?

    /*eine function wird definiert*/
                 function Ergebnis()
                 {

    Anscheinend doch ... Dir ist klar, wozu Kommentare eigentlich dienen sollten? Dass "ein <script>-Element geöffnet" bzw. "eine Funktion definiert" wird, sieht der geneigte Quellcode-Leser auch so. Interessanter wäre eher, was genau die Funktion macht, welche Parameter sie erwartet und welchen Rückgabetyp sie besitzt.

    /*die lokale variable 'ergebnis' wird initialisiert und deklariert*/
                          var ergebnis = "0";

    Auch dieser Kommentar ist eher überflüssig. *WAS* dort passiert, sieht man auch so. Interessanter wäre, *WARUM* das dort steht.

    /*'ergebnis' wird neu initialisiert*/
                          ergebnis = eval(document.form1.zahlenfeld.value);

    Merke: "eval() is evil!" Warum? Du lässt den Browser ungeprüft irgendeinen Code ausführen, den irgendwer in irgendein Eingabeelement eingetippt hat. Gib dort doch probeweise mal sowas wie "while (true) { document.write 'Ätsch!'; }" ein ... viel Spaß!

    <!--der body abschnitt wird geöffnet-->
      <body bgcolor=purple text=#00ff00 vlink=yellow>

    Die Kommentare sind immer noch sinnfrei. Außerdem solltest Du Dir angewöhnen, <http://de.selfhtml.org/html/allgemein/textauszeichnung.htm#attribute@title=Attribute immer in Anführungszeichen> einzuschließen.

    <!--Dies ist ein Befehl damit der text überden bildschirm rollt-->
          <marquee  behavior="alternate" scrollamount="10" scrolldelay="5"><h3>Hiermit können Sie alles rechnen!!!</h3>
          </marquee>

    Nein. Einerseits gibt es in HTML keine Befehle, sondern nur Elemente und andererseits ist das <http://de.selfhtml.org/html/text/proprietaer.htm#marquee@title=<marquee>-Element> weder standardkonformes HTML (sondern eine proprietäre Erweiterung von MICROS~1), noch ist es sinnvoll, den Besucher durch hin- und herzappelnden Text zu nerven.

    <!--durch diesen Befehl wird alles in die mitte verschoben-->
          <center>

    Nein. Einerseits s.o. und andererseits sollte die Ausrichtung von Elementen <http://de.selfhtml.org/css/eigenschaften/ausrichtung.htm@title=mittels CSS> erfolgen - dieses (und viele andere) Element <http://de.selfhtml.org/html/text/bereiche.htm#block_zentriert@title=ist als "deprecated" eingestuft und wird nicht mehr lange überleben>.

    <!--eine tabelle wird erstellt mit rand -->
            <table border=8 cellpadding=10>
              <!--eine zeile wird erstellt-->
              <tr>
                <!--eine Zelle die sich über 4 Spalten erstreckt wird erstellt -->
                <td colspan="4" bgcolor=black >

    Auch gilt wieder: die Kommentare sind überflüssig und erschweren nur das Lesen des Quellcodes, die Attribute sollten in Anführungszeichen stehen und das Aussehen von Tabellenelementen sollte <http://de.selfhtml.org/css/eigenschaften/tabellen.htm@title=per CSS> festgelegt werden.

    ich muss nur noch schaffen das bei mal, plus, geteilt und minus die erste zahl verschwindet wenn ich die zweite eingebe und das ohne "if"

    Was genau meinst Du damit?

    MfG,
    EKKi

    --
    sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
    1. Merke: "eval() is evil!" Warum? Du lässt den Browser ungeprüft irgendeinen Code ausführen, den irgendwer in irgendein Eingabeelement eingetippt hat. Gib dort doch probeweise mal sowas wie "while (true) { document.write 'Ätsch!'; }" ein ... viel Spaß!

      ???
      Du erweckst hier den Anschein, dass das irgendwie eine Sicherheitslücke wäre. Den Code hat nicht »irgendwer« in »irgendein« Eingabeelement eingetippt, sondern höchstens der Benutzer des Rechners selbst. Klar, jeder Benutzer kann in seinem Browser von ihm eingegebenen JavaScript-Code ausführen. Ja, und? Das ist kein Problem. Dazu brauche ich kein Formular-Element, sondern tippe den Code einfach in die entsprechende JavaScript-Konsole oder mit »javascript:« in die Adresszeile. Wenn ich da dann mutwillig eine Endlosschleife reintippe, ist es mein Problem.

      Dass ein JS-Taschenrechner nun als JS-Konsole funktioniert, ist natürlich nicht so prickelnd: Die Wahrscheinlichkeit, dass der Benutzer etwas (durchaus einen math. Term) eingibt und das nicht so interpretiert wird, wie er sich das dachte, ist natürlich hoch. Aber sicherheitskritisch ist das nicht, dazu müsste der Benutzer schon absichtlich beknackten JS-Code eingeben und ausführen. Dann ist er selbst schuld.

      Mathias