Hallo Leute, ich soll für Informatik ein Projekt vorstellen, und ich habe mir eine Art Eignungstest vorgestellt. Die Werte werden in diversen input type="radio" und select-Feldern eingegeben, die dann von der Funktion Kanal() ausgewertet werden.
Ich hatte mir das so gedacht, dass man einen bestimmten Punkt anklickt, worauf die Variable ein paar Punkte zugerechnet bzw. abgezogen bekommt. Der AM ENDE feststehende Wert soll als Grundlage für die Ausgabe dienen. Hier die Funktion:
"function Kanal()
{
var Punktzahl = 0 ; <- die Variable mit Anfangswert
if(document.Test.Geschlecht[0].checked==true) ; <- für die Antwort gibt's Punkte
{Punktzahl=Punktzahl+2} ;
if(document.Test.Geschlecht[1].checked==true) ; <- für diese allerdings nicht
{Punktzahl=Punktzahl-2} ;
if(Punktzahl<0)
{Ausgabe="Sie sind ungeeignet"} <- Auswertung u. Ausgabe
document.Test.Auswertung.value=Ausgabe ;
}"
Punktzahl wird allerdings zu keiner Zeit verändert, denn
"if(Punktzahl==0)
{Ausgabe="Sie sind ungeeignet"}"
funktioniert.
Wer kann mir helfen?
Homepage selbermachen 7.852 Themen, 35.619 Beiträge
Beseitige erstmal die gröbsten Fehler ...
1.)
if(document.Test.Geschlecht[0].checked==true) ;
das ";" hinter der Abfragebedingung falsch
2.)
{Punktzahl=Punktzahl-2} ;
das ";" gehört innerhalb der geschweiften Klammern direkt hinter die Anweisung
... und dann teste nochmal.
Als angehender Informatiker solltest Du solche Fehler aber selbst finden, zB durch den Einbau von alert-Anweisungen.
Das abschließende Semikolon wurde als Fehler ja schon angesprochen... das ist syntaktisch falsch, aber das ist nicht der Fehler mit der Punkteberechnung. Der Fehler liegt im Geltungsbereich von Variablen.
Wenn Du eine Variable mit "var" innerhalb einer Funktion deklarierst, so ist diese Variable lokal in ihrem Geltungsbereich. Sie ist also innerhalb einer Funktion nicht sichtbar und verfügbar. Ebensowenig ist diese statisch zwischen einzelnen Funktionsaufrufen. Der zweite Aufruf der Funktion weiß nichts über den Wert der Variablen aus dem ersten Aufruf.
Deklariere die Varíable Punktzahl also außerhalb der Funktion, dann kann ihr Wert auch über Funktionsaufrufe hinweg genutzt werden.
Ich würde mal sagen, Du bist durchgefallen ;o)
Höhö, ich gehe in die 10. Klasse, aber egal^^
Wollt ich nur so mal hinzufügen..
Die Ausrufezeichen und Semikolons sind von Nickles, der erste Beitrag sah am Anfang nämlich noch so aus:
Hallo Leute, ich soll für Informatik ein Projekt vorstellen, und ich habe mir eine Art Eignungstest vorgestellt. Die Werte werden in diversen "input-Kreis" "select-Feld" und das war's. Nickles hat das dann irgendwie in Text formatiert..
"Deklariere die Varíable Punktzahl also außerhalb der Funktion, dann kann ihr Wert auch über Funktionsaufrufe hinweg genutzt werden."
Also so?
var Punktzahl = 0
function Kanal()
{
...
}
Ich werd's mal probieren, danke!
<script language="JavaScript">
var Punktzahl=0 ;
function Kanal()
{
if(document.Test.Geschlecht[0].checked==true) ;
{Punktzahl=Punktzahl+2} ;
if(document.Test.Geschlecht[1].checked==true) ;
{Punktzahl=Punktzahl-2} ;
if(Punktzahl==0)
{Ausgabe="Hallo!"}
document.Test.Auswertung.value=Ausgabe ;
}
</script>
Es wird weiterhin "Hallo!" ausgegeben..
Wer kann mir helfen? NICHTS funktioniert!
Wie sieht denn dein Formular aus? In welchem Browser testest Du das? Nimm mal folgenden Code:
var Punktzahl=0;
function Kanal()
{
var opt1 = document.getElementsByName("Geschlecht")[0];
var opt2 = document.getElementsByName("Geschlecht")[1];
var res = document.getElementsByName("Auswertung")[0];
if( opt1.checked==true )
{
Punktzahl += 2;
}
else if( opt2.checked==true )
{
Punktzahl -= 2;
}
res.value = Punktzahl;
}
und folgendes Formular:
<form name="Test">
<input type="radio" name="Geschlecht" />
<input type="radio" name="Geschlecht" />
<input type="text" name="Auswertung" />
<input type="button" onclick="javascript:Kanal();" value="auswerten" />
</form>
Holy Moly O.O
Browser ist Firefox, V.3.0
Nach deiner Methode müsste ich also für jeden einggebbaren Wert eine Variable definieren..
Was ziemlich viel Arbeit wäre (s. unten).
Nur funktioniert dein Script, und meins nicht.
Also an die Arbeit.
Das (Ursprungs-)Script:
<html>
<head>
<title>Eignungstest - Seite 1</title>
<script language="JavaScript">
function Kanal()
{
var Punktzahl = 0 ;
if(document.Test.FeldAlter.value<80) ;
if(document.Test.FeldAlter.value<50) ;
if(document.Test.FeldAlter.value<20) ;
{Punktzahl=Punktzahl+0} ;
else {Punktzahl=Punktzahl+2} ;
else {Punktzahl=Punktzahl-2} ;
else {Punktzahl=Punktzahl-4} ;
if(document.Test.Geschlecht[0].checked==true) ;
{Punktzahl=Punktzahl+2} ;
if(document.Test.Geschlecht[1].checked==true) ;
{Punktzahl=Punktzahl-2} ;
if(document.Test.Beziehung.selectedIndex==0) ;
{Punktzahl=Punktzahl+2} ;
if(document.Test.Beziehung.selectedIndex==1) ;
{Punktzahl=Punktzahl+1} ;
if(document.Test.Beziehung.selectedIndex==2) ;
{Punktzahl=Punktzahl+0} ;
if(document.Test.Beziehung.selectedIndex==3) ;
{Punktzahl=Punktzahl-4} ;
if(document.Test.Beziehung.selectedIndex==4) ;
{Punktzahl=Punktzahl-2} ;
if(document.Test.BereichBeruf.selectedIndex==0) ;
{Punktzahl=Punktzahl+4} ;
if(document.Test.BereichBeruf.selectedIndex==1) ;
{Punktzahl=Punktzahl+2) ;
if(document.Test.BereichBeruf.selectedIndex==2) ;
{Punktzahl=Punktzahl-2} ;
if(document.Test.BereichBeruf.selectedIndex==3) ;
{Punktzahl=Punktzahl+0} ;
if(document.Test.BereichBeruf.selectedIndex==4) ;
{Punktzahl=Punktzahl-4} ;
if(document.Test.Hund.selectedIndex==0) ;
{Punktzahl=Punktzahl+0} ;
if(document.Test.Hund.selectedIndex==1) ;
{Punktzahl=Punktzahl+2} ;
if(document.Test.Hund.selectedIndex==2) ;
{Punktzahl=Punktzahl-4} ;
if(document.Test.Hund.selectedIndex==3) ;
{Punktzahl=Punktzahl-2} ;
if(document.Test.Hund.selectedIndex==4) ;
{Punktzahl=Punktzahl+4} ;
if(document.Test.TausendEuro.selectedIndex==0) ;
{Punktzahl=Punktzahl-2} ;
if(document.Test.TausendEuro.selectedIndex==1) ;
{Punktzahl=Punktzahl-4} ;
if(document.Test.TausendEuro.selectedIndex==2) ;
{Punktzahl=Punktzahl+2} ;
if(document.Test.TausendEuro.selectedIndex==3) ;
{Punktzahl=Punktzahl+4} ;
if(document.Test.TausendEuro.selectedIndex==4) ;
{Punktzahl=Punktzahl+0} ;
if(document.Test.Klo.selectedIndex==0) ;
{Punktzahl=Punktzahl+2} ;
if(document.Test.Klo.selectedIndex==1) ;
{Punktzahl=Punktzahl+0} ;
if(Punktzahl<0) ;
{Ausgabe="Dummes Kind!"} ;
document.Test.Auswertung.value=Ausgabe ;
}
</script>
</head>
-----------------------------------------------
Das da unten ist das gesamte Formular..
<body>
<form name="Test">
Auf dieser Seite wird ihnen für den <a name="oben">Anfang</a> erst wenig abverlangt.
<br>
Bitte geben sie in dieses Feld ihr tatsächliches Alter in Jahren an:
<p>
<input type="text" name="FeldAlter" size="3">
<p>
Sind sie:
<p>
<input type="radio" name="Geschlecht" value="Nr1">   Männlich
<br>
<input type="radio" name="Geschlecht" value="Nr2">   Weiblich
<p>
Sind sie...
<p>
<select name="Beziehung">
<option value="Nr1"> Verheiratet
<option value="Nr2"> verlobt
<option value="Nr3"> ledig
<option value="Nr4"> homosexuell
<option value="Nr5"> allein
</select>
<p>
In welchem Bereich übten sie früher ihren Beruf aus?
<p>
<select name="BereichBeruf">
<option value="Nr1"> Technik
<option value="Nr2"> Soziales
<option value="Nr3"> Beamtenwesen
<option value="Nr4"> Naturwissenschaften
<option value="Nr5"> arbeitslos
</select>
<p>
So, diesen langweiligen, aber notwendigen Abschnitt hätten wir hinter uns. Kommen wir nun zu
<b>Sektion 1</b>: Persönliches!
<p>
FRAGE 1
<br>
Sie fahren Fahrrad auf einer einsamen Straße. Sie sehen einen armen Hund am Straßenrand liegen.
<br>
Was tun Sie?
<p>
Ich...  
<select name="Hund">
<option value="Nr1"> fahre vorbei und tue nichts
<option value="Nr2"> bleibe stehen und habe Mitleid
<option value="Nr3"> überfahre ihn
<option value="Nr4"> führe dem Hund ein Tänzchen vor
<option value="Nr5"> ziehe mich nackt aus, beschmiere mich mit Senf und warte
</select>
<p>
FRAGE 2
<br>
Sie erhalten überraschenderweise 1000 €. Was tun sie damit?
<p>
Ich...  
<select name="TausendEuro">
<option value="Nr1"> tue das Geld in meine Spardose / auf mein Konto / unter die Matratze
<option value="Nr2"> verprasse alles an einem einzigen Abend
<option value="Nr3"> erfülle mir damit einen lang gehegten Traum
<option value="Nr4"> verbrenne die Scheine, weil ich Konsum und Kapitalismus abgrundtief verabscheue
<option value="Nr5"> spende sie eine gemeinnützigen Organisation
</select>
<p>
FRAGE 3
<br>
Ihr Klo ist verstopft. Sie sind einarmig und blind. Wie gehen Sie vor?
<p>
Ich...  
<select name="Klo">
<option value="Nr1"> will einen Klempner rufen, finde die Nummer aber nicht
<option value="Nr2"> habe die Nummer, finde aber das Telefon nicht
<option value="Nr3"> versuche, es selbst zu reparieren, finde aber das Klo nicht
<option value="Nr4"> folge dem Gestank und löse das Problem mit einer Handgranate
<option value="Nr5"> folge dem Gestank, benutze den VAKUUM-FLEX 3000 und muss daraufhin 2 Tage später von der Feuerwehr von dem Spülbecken befreit werden
</select>
<p>
Das haben sie bereits sehr gut gelöst! Kommen wir nun zu <b>Sektion 2</b>: Dem Kanal-Quiz!
<p>
FRAGE 1
<br>
Ein Kanaldeckel mit der Lötung "2X-3f15" darf nur wie geöffnet werden?
<p>
<input type="radio" name="Quiz1" value="Nr1">   Man benutzt seine Fingernägel
<br>
<input type="radio" name="Quiz1" value="Nr2">   Mit einer Brechstange der Kennung "22"
<br>
<input type="radio" name="Quiz1" value="Nr3">   Mit der obigen Brechstange in Kombination eines Lötschlüssels der Kennung "LötLord"
<br>
<input type="radio" name="Quiz1" value="Nr4">   Man ruft Buddha zu Hilfe und betet um geistige Unterstützung
<p>
FRAGE 2
<br>
Wie entnimmt man korrekt eine Kotprobe?
<p>
<input type="radio" name="Quiz2" value="Nr1">   Man steckt sich den Finger dahin wo die Sonne nie scheint und riecht
<br>
<input type="radio" name="Quiz2" value="Nr2">   Man destilliert 256 Gramm Schweine-Exkrement bei 449,28 °C im Backofen bei Mitternacht
<br>
<input type="radio" name="Quiz2" value="Nr3">   Man untersucht den isolierten Feces auf Einschlüsse, Klarheit der Farbe, Geschmack und Geruch
<br>
<input type="radio" name="Quiz2" value="Nr4">   Man badet in der Kläranlage
<p>
FRAGE 3
<br>
Mit welchem Gerät wird Kot der Dichte von 2,3 g/cm³ und einem Schmelzpunkt von 78°C entfernt?
<p>
<input type="radio" name="Quiz3" value="Nr1">   Mit Klopapier
<br>
<input type="radio" name="Quiz3" value="Nr1">   Mit Hammer und Meißel
<br>
<input type="radio" name="Quiz3" value="Nr1">   Mit einer Vakuumpumpe der Kennung "56-B"
<br>
<input type="radio" name="Quiz3" value="Nr1">   Mit einem Tintenkiller von "Pelikan"
der Marke "Super Pirat"
<p>
HERZLICHEN GLÜCKWUNSCH!!!
<br>
Sie haben nun den gesamten Test bearbeitet!
<br>
Klicken Sie nun bitte auf den unteren Knopf, um ihre Bewertung zu lesen:
<p>
<input type="button" value="Klick mich bitte in die Mitte" onclick="Kanal()">
<p>
<p>
<p>
<input type="text" name="Auswertung" size="100">
<p>
<a href=#oben>nach oben</a>
<br>
<a href="SeiteAnfang.html">Zur Startseite</a>
</form>
</body>
Also, xafford..
Du hast mir bereits so grundlegendes Zeugs klargemacht, und dein script ist toll. Allerdings funktioniert der Mist schon wieder nicht, wenn ich in dein script eine zusätzliche ifBedingung einbaue, zB
if(res.value==6)
{Ausgabe="Heissa!"}
Dann tut sich gar nichts mehr :(
Mein Infolehrer hilft auch nicht wirklich weiter
(zu stur bzw. beschränkt)..
Bin nahe dran am Aufgeben.
Sch****!