Christoph Durst: Hilfe bei Javascript für Berrechnung der Ziffernsumme...

Kann mir jemand sagen was an dem Code verändert werden muß, damit ich
 nicht mehr die Meldung "i1 ist undefiniert" bekomme?

(i1 BEDEUTET ieins!!!!!!!!!!!!!!!!!!!)

Hier der Code:

<head>

<title>?</title>
</head>

<body>
<script type="text/javascript">
<!--
var Eingabe = window.prompt("Geben Sie die Zahl ein, von der Sie die Ziffernsumme benötigen.","");
var i = Eingabe;

function Ziffernumwandlung() {
if(i == 0){
return 0;}
else{
var a=("+i+"/1000);
var b=(("+i+"-"+a+")/100);
var c=(("+i+"-"+b+")/10);
var d=(("+i+"-"+c+")/1);
}
}

function Ziffernsumme() {
var i1 = (("+a+")+("+b+")+("+c+")+("+d+"));
}

alert("Die Ziffernsumme von "+Eingabe+" ist "+Ziffernsumme(i1));

//-->
</script>

</body>

</html>

  1. Hallo Christoph.

    Kann mir jemand sagen was an dem Code verändert werden muß, damit ich
    nicht mehr die Meldung "i1 ist undefiniert" bekomme?

    (i1 BEDEUTET ieins!!!!!!!!!!!!!!!!!!!)

    Verstehe!!!!!!!111einself

    var Eingabe = window.prompt("Geben Sie die Zahl ein, von der Sie die Ziffernsumme benötigen.","");

    var i = Eingabe;

      
    Wozu diese unnötige Umspeicherung des Rückabewertes von prompt()?  
      
    
    > ~~~javascript
    
    function Ziffernumwandlung() {  
    
    > if(i == 0){
    
    

    Hier greifst du auf die globale Variable „i“ zurück, da es lokal keine gibt. Das zeugt nicht sonderlich von gutem Stil.

    Besser wäre es, wenn du „Eingabe“ an „Ziffernumwandlung“ übergeben würdest:

    var Eingabe = window.prompt("Geben Sie die Zahl ein, von der Sie die Ziffernsumme benötigen.","");  
      
    Ziffernumwandlung(Eingabe);
    

    Im übrigen kann besagter Rückgabewert auch „undefined“ sein, wenn z. B. „Abbrechen“ gewählt wurde. Darauf solltest du reagieren.

    var a=("+i+"/1000);

    var b=(("+i+"-"+a+")/100);
    var c=(("+i+"-"+b+")/10);
    var d=(("+i+"-"+c+")/1);

      
    Hiermit erzeugst du vier \*lokale\* Variablen. Nach Abarbeitung der Funktion (welche du im Übrigen niemals aufrufst) verfallen diese und werden entsorgt. Sie sind entgegen deiner Erwartung nicht von Außen erreichbar.  
      
    Im Übrigen würdest du hier zwei Zeichenketten voneinander subtrahieren, was nicht möglich ist.  
      
    
    > function Ziffernsumme() {  
    > var i1 = (("+a+")+("+b+")+("+c+")+("+d+"));  
    > }  
      
    Hier solltest du zumindest „i1“ oder besser gleich den Ausdruck zurückgeben.  
      
    
    > alert("Die Ziffernsumme von "+Eingabe+" ist "+Ziffernsumme(i1));  
      
    Und wie meinst du „i1“ an Ziffernsumme() übergeben zu können, wenn die Variable nur darin existiert?  
      
    Ich denke, du solltest dich noch einmal mit den Grundlagen von JavaScript befassen. Und vor allem solltest du \*in Worten\* beschreiben was du vorhast, bevor du auch nur eine einzige Zeile Code schreibst.  
      
      
    Einen schönen Freitag noch.  
      
    Gruß, Mathias  
    
    -- 
    ie:% fl:| br:< va:) ls:& fo:) rl:( n4:~ ss:) de:] js:| mo:| zu:)  
      
    debian/rules
    
    1. var Eingabe = window.prompt("Geben Sie die Zahl ein, von der Sie die Ziffernsumme benötigen.","");

      var i = Eingabe;

        
      Meinst du die [Quersumme](http://javascript.jstruebig.de/javascript/55/)?  
        
        
      Struppi.
      
      -- 
      [Javascript ist toll](http://javascript.jstruebig.de/) (Perl auch!)