Problem mit zwei Funktionen

  • Themenstarter Themenstarter Oerle
  • Beginndatum Beginndatum
O

Oerle

Hallo!


aslo ich hab das problem, dass ich zwei funktionen habe und eine funktioniert mit der zweiten zusammen im html dokument nicht mehr. es funktioniert zwar soweit, nur bei 6. formulare kommt immer 0 raus.

wie haben dieses dokument in der schule geschriebn, und müssen es abgeben, aber diesen fehler begkomme ich nicht in den griff :)

ich erlaube mir den ganzen html code zu posten, da vieleicht in anderen scrips der fehler liegen könnte, was ich aber eher unwarscheinlich halte.

Code:
<html>
<head>
<title>Javascript-Demo</title>
</head>
<body font="Verdana" bgcolor="yellow">

<H1>Javascript - Ein erster Überblick</h1>


<ol>

<li><h2>Hello, world!: document.write()</h2></li>
<script language="javascript">
document.write("<i>hello, world!</i>");
</script>


<li><h2>Variablen: var summe</h2></li>
<script language="javascript">
var summe;
summe= 10 + 20;
summe= summe + summe;
document.write("Die variable summe hat den Wert: " + summe);


var laenge= 40;
var breite= 5;
var flaeche;

flaeche= laenge * breite;
document.write("<br>Laenge=" + laenge);
document.write("<br>Breite=" + breite);
document.write("<br>Fl&auml;che=" + flaeche);
</script>


<li><h2>Verzweigung: if</h2></li>
<script language="javascript">
var heute=10;

if (heute == 9){  // ! Vergleichsoperator ==
	document.write("Der Tag ist 9");
}
else {
	document.write("Der Tag ist NICHT 9");
}
</script>


<li><h2>Schleifen: for, while, (1 mal 1)</h2></li>
<script language="javascript">
var reihe=8;
var i;
var ergebnis;

for (i=1; i <= 10; i++) {
	ergebnis= i * reihe;
	document.write("<br>" +i + " * " + reihe + "= " + ergebnis);
}


//HÜ: summe von 1 bis 10
var summe=0;
for (i=1; i <= 100; i++) {
   summe= summe + i;
}

document.write("<br>Die Variable Summe (1 bis 100) hat den Wert: " + summe);
</script>


<li><h2>Funktionen: function(a,b)</h2></li>
<script language="javascript">

// berechnet die Summe zwischen a und b
function summe(a,b){
	var i;
	var ergebnis=0;
	
	for (i=a; i<= b; i++){
		ergebnis= ergebnis + i;
	}
	
	return ergebnis;
}

document.write("<br>Die Summe (2 bis 4) hat den Wert: " + summe(2,4));
</script>


<li><h2>Formulare:</h2></li>
<script language="javascript">

// berechnet die Summe zwischen a und b
function summe(a,b){
	var i;
	var ergebnis=0;
	
	for (i=a; i<= b; i++){
		ergebnis= ergebnis + i;
	}
	
	return ergebnis;
}

function doit(){
	var von= parseInt(document.frm_funktion.von.value);
	var bis= parseInt(document.frm_funktion.bis.value);

	document.frm_funktion.gesamt.value= summe(von, bis);
}
</script>


<FORM NAME="frm_funktion">
Von= <INPUT TYPE="Text" NAME="von" VALUE="2" SIZE="5"> <P>
Bis= <INPUT TYPE="Text" NAME="bis" VALUE="4" SIZE="5"> <P>
Gesamt= <INPUT TYPE="Text" NAME="gesamt" VALUE="" SIZE="10"> <P>

<INPUT TYPE="BUTTON" VALUE="summe" onclick="doit()"> <P>

</FORM>


<li><h2>Übung:</h2></li>
<script language="javascript">

// berechnet die Summe zwischen a und b
function summe(a,b){
	var i;
	var ergebnis=0;
	var bis;
	var von;
	for (i=von; i<= bis; i++){
		ergebnis= i * reihe;
	}
	
	return ergebnis;
}

function dooit(){
	var von=parseInt(document.nt_funktion.von.value);
	var bis=parseInt(document.nt_funktion.bis.value);
	var reihe=parseInt(document.nt_funktion.reihe.value);
	var i;

	for (i=von; i<= bis; i++){
		ergebnis= i * reihe;
		document.write("<br>" +i + " * " + reihe + "= " + ergebnis);
	}

	document.nt_funktion.gesamt.value= summe(a,b);
}

</script>


<FORM NAME="nt_funktion">
Von= <INPUT TYPE="Text" NAME="von" VALUE="2" SIZE="5"> <P>
Bis= <INPUT TYPE="Text" NAME="bis" VALUE="4" SIZE="5"> <P>
Reihe= <INPUT TYPE="Text" NAME="reihe" VALUE="3" SIZE="5"> <P>

<INPUT TYPE="BUTTON" VALUE="GO" onclick="dooit()"> <P>

</FORM>



</ol>
</body>
</html>

lg oerle
 
Problem ist, dass immer wieder Funktionen mit dem Namen "summe()" in deinem Dokument auftauchen. Während des Ladens wird das Dokument von oben nach unten abgearbeitet und eine Funkion "summe()", die später kommt überschreibt dabei eine, die weiter oben im Dokument steht - es existiert immer nur eine im Dokument, nämlich, die, die gerade geladen wurde. Ist das Dokument vollständig geladen, existiert also nur die letzte.
Den onclick beim Gesamt-Button führst du aus, wenn die Seite schon fertig geladen ist. Somit wird zu dem Zeitpunkt die Funktion "summe()", die als letztes im Dokument steht verwendet und das ist diese hier:
Javascript:
// berechnet die Summe zwischen a und b
function summe(a,b){
    var i;
    var ergebnis=0;
    var bis;
    var von;
    for (i=von; i<= bis; i++){
        ergebnis= i * reihe;
    }
    
    return ergebnis;
}
Warum die immer "0" zurück gibt, sollte dir eigentlich klar sein. Wenn nicht, denk nochmal gründlich nach, schau dir nochmal die Variablen an und wenn du dann immer noch nicht drauf kommst, kannst du ja nochmal hier fragen.

Dein Problem könntest du jetzt z.B. lösen indem du der richtigen Funktion "summe()" einen eindeutigeren Namen gibst. Das sähe dann z.B. so aus:
HTML:
<li><h2>Formulare:</h2></li>
<script language="javascript">

// berechnet die Summe zwischen a und b
function summe2(a,b){
    var i;
    var ergebnis=0;
    
    for (i=a; i<= b; i++){
        ergebnis= ergebnis + i;
    }
    
    return ergebnis;
}

function doit2(){
    var von= parseInt(document.frm_funktion.von.value);
    var bis= parseInt(document.frm_funktion.bis.value);

    document.frm_funktion.gesamt.value= summe2(von, bis);
}
</script>


<FORM NAME="frm_funktion">
Von= <INPUT TYPE="Text" NAME="von" VALUE="2" SIZE="5"> <P>
Bis= <INPUT TYPE="Text" NAME="bis" VALUE="4" SIZE="5"> <P>
Gesamt= <INPUT TYPE="Text" NAME="gesamt" VALUE="" SIZE="10"> <P>

<INPUT TYPE="BUTTON" VALUE="summe" onclick="doit2()"> <P>

</FORM>
Zum Schluss noch ein paar allgemeine, aber wichtige Sachen. D.h. wichtig nur dann, wenn du anderen Forenmitgliedern nicht auf die Nerven gehen willst und weiter Hilfe von uns erwartest:
Nettiquette Punkt 15 hat gesagt.:
Unser Forum ist kein Chatroom. [...] Jugendsprache, regional verbreitete Dialekte und durchgehend kleingeschriebene Beiträge sind ebenfalls unerwünscht.
Du hast unseren Regeln beim Registieren zugestimmt, also halte dich bitte auch dran. Zusätzlich solltest du noch diesen Thread koplett durchlesen, weil du ziemlich neu bist. Danke!

Dann gibt es so etwas wie einen XHTML-Standard, den du eigentlich auf der Schule gelernt haben solltest. Mein schreibt Attribute in HTML-Tags durchgehend klein. Bei Tags, die keinen Schlusstag haben, wie <img />, <input />, <meta /> usw. schließt man das Tag nicht einfach mit ">" sondern mit " />". Also
HTML:
<input type="button" value="Ok!" onclick="doit()" />
statt
HTML:
<input TYPE="button" VALUE="Ok!" ONCLICK="doit()">
Außerdem ist das language-Attribut im Script-Tag und das Name-Attribut im <form>-Tag unerwünscht. Also
HTML:
<script type="text/javascript"><!--
alert("test");
//-->
</script>
<form id="nt_funktion">
....
</form>
statt
HTML:
<script language="javascript">
alert("test");
</script>
<form name="nt_funktion">
...
</form>
Sorry, für die Predigt, aber wenn's dir sonst keiner sagt, lernst du's nie, machst einen schlechten Eidruck und hinkst in der entwicklung um 10 Jahre hinterher. Die Standards hab nicht ich erfunden, sondern das W3-Konsorzium und wenn du mal in den Quellcode von anderen Seite schaust, wirst du feststellen, dass 80% sich daran halten. Wenn du die richtigen Standards lernen willst empfehle ich die die w3schools.
 
Zuletzt bearbeitet:
Tut mir leid, dass ich alles klein geschreiben habe, da war das Hirn wohl gerade mit etwas Anderem beschäftigt.

Danke für die Hilfe!

In der Schule hab ich noch NIE was von XHTML gehört, tut mir sehr leid. Außerdem ist uns gesagt worden, dass es grundsätzlich egal ist, ob man die Tags groß oder klein schreibt.

Ich bin jetzt mal sehr überfordert, denn dass meine Kenntnisse so weit hinken, das finde ich nicht gut, insbesondere, da wir HTML erst vor ein paar Monaten gelernt haben.:suspekt:

Danke auch für den Hinweis, ich werde mein HTML streichen und ganz von Anfang an neu anfangen.
 
Ganz von Anfang neu anfangen ist nicht nötig. Es sind eigentlich eher kleine, kosmetische Änderungen. Was du schreibst versteht ja auch jeder Browser. Standards sind nur deshalb wichtig, damit deine Dateien auch in Zukunft richtig verstanden werden und das auch überall und damit man sich besser zurecht finden.
Es ist allerdings schade, das XHTML und die HTML-Spezifikationen an Schulen so wenig beachtung finden.
 
Heißt das, dass in Zukunft die Browser Bilder ohne /> nicht darstellen, und nur kleingeschriebenes HTML interpretiert wird?

Ich muss mir dann ein anderes HTML Programm holen, da FrontPage wohl auch nach hinkt, zumindest meine Versoin.

Ich hab mich schon mal ein bischen mit den neuen Standarts beschäftigt, also ein kleines Hirn-Update gemacht.
Ist nich so schwer, wie ich gedacht habe :)
 

Neue Beiträge

Zurück