[S] Kleine schnelle Hilfe Java Script

06/11/2012 22:28 bluna771#1
Brauche für die Schule einen Taschenrechner, mein eigener will nicht so recht:


Code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html><head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">

<script language="JavaScript">
<!--
 function ergebnis() {
      var input1 = document.getElementById("input1");
      var input2 = document.getElementById("input2");
      var input3 = document.getElementById("input3");
      var val1 = +input1.value;
      var val2 = +input2.value;
      var operate = {
          "*" : val1 * val2,
          "/" : val1 / val2,
          "+" : val1 + val2,
          "-" : val1 - val2
      };
      alert("Das ergebnis lautet: " + operate);
 }

 if (typeof operate[select.value] != "undefined") {
    input3.value = operate[select.value]
}
//-->

</script>
<noscript></noscript>

<title></title>
<meta name="author" content="user">
<meta name="editor" content="html-editor phase 5">
</head><body alink="#ff0000" bgcolor="#ffffff" text="#000000" vlink="#ff0000" link="#ff0000">

<form id="rechner">
<input size="5" id="input1" type="text">
    <select id="input3" size="1">
      <option>+</option>
      <option>-</option>
      <option>*</option>
      <option>/</option>
    </select>
<input size="5" name="input2" type="text">
 <input value="=" onclick="ergebnis()" type="button">
</form>


</body></html>
Wo ist mein Fehler?

Für eine Gute Antowort / Lösung biete ich 5 EG !
06/11/2012 22:49 nkkk#2
naja erstmal muss bei:
<input size="5" name="input2" type="text">
id statt name hin da du ja per id suchst.

und bei:
PHP Code:
      var operate = {
          
"*" val1 val2,
          
"/" val1 val2,
          
"+" val1 val2,
          
"-" val1 val2
      
}; 
weis ich nicht geanu was du da benutzt aber ich bin mir zimlich sicher das das nciht funktioniert. willst du evtl switch benutzten?
06/11/2012 22:57 bluna771#3
Klar schlag vor was etwas bringt !! Brauche es sehr dringend
06/12/2012 21:12 MrSm!th#4
#moved
06/12/2012 21:48 NotEnoughForYou#5
ist zwar nicht optimal, hab deins nur so bearbeitet, dass es läuft:

PHP Code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<
html>
<
head>
<
meta http-equiv="content-type" content="text/html; charset=UTF-8">
<
script>
 function 
ergebnis() { 
 
      var 
input1 document.getElementById("input1").value;
      var 
input2 document.getElementById("input2").value;
      var 
input3 document.getElementById("input3").value;
      
      var 
val1 parseInt(input1);
      var 
val2 parseInt(input2);     
      
      var 
operate;
       
      switch(
input3) {
          case 
'*':
               
operate val1 val2;
               break;
           case 
'+':
                
operate val1 val2;
                break;
            case 
'-':
                
operate val1 val2;
                break;
           case 
'/':
                
operate val1 val2;
                break;
            default:
                
alert("Fehler");
                break;
        }    
    
      
alert("Das ergebnis lautet: " operate); 
 }

</script>
<title>Rechner</title>
<meta name="author" content="user">
<meta name="editor" content="html-editor phase 5">
</head>
<body alink="#ff0000" bgcolor="#ffffff" text="#000000" vlink="#ff0000" link="#ff0000">

<form id="rechner">
<input size="5" id="input1" type="text">
    <select id="input3" size="1">
      <option value="+">+</option>
      <option value="-">-</option>
      <option value="*">*</option>
      <option value="/">/</option>
    </select>
<input size="5" id="input2" type="text">
 <input value="=" onClick="javascript:ergebnis()" type="button">
</form>

</body>
</html> 
06/12/2012 22:50 Fratyr#6
Quote:
weis ich nicht geanu was du da benutzt aber ich bin mir zimlich sicher das das nciht funktioniert. willst du evtl switch benutzten?
Nennt sich JavaScript Object Notation (JSON).

PHP Code:
     var operate = {
          
"*" val1 val2,
          
"/" val1 val2,
          
"+" val1 val2,
          
"-" val1 val2
      
}; 
Du rechnest zwar speicherst dein Ergebniss aber nicht ab. Auserdem verlässt du dich auf einen global Scope deiner Variablen, keine gute Idee. Ich gaube an dem Punkt hast du JSON etwas falsch verstanden, das hinte dem Punkt ist genauso wie in PHP das "function" oder "var" statement, nur das JSON hier je nachdem was hinter dem Punkt steht separiert was was ist.

PHP Code:
var operate = {
  
"*": function (v1v2) { return v1 v2 };
}; 
In dem Fall ist "*" also eine Funktion, und wenn du mit JSON rechnen willst kommst du nicht drum herum deinen Code so zu schreiben wie in meinem Beispiel oben.
06/13/2012 11:07 Muddy Waters#7
Bei JSON Notation dürfen allerdings keine Semikola verwendet werden, richtig wäre demnach:
Code:
var operate = {
  "*": function (v1, v2) { return v1 * v2 }
};
Ansonsten gebe ich dir aber soweit recht. :)
Man sollte vielleicht noch dazu sagen, dass der Zugriff auf solch eine Funktion wegen des eigentlich ungültigen Bezeichners nur auf folgende Weise erfolgen kann:
Code:
// Richtig:
operate["*"](42, 42);
// Falsch:
operate.*(42, 42);