Hallo und frohe Ostern,
die Schokoladeneier habe ich alle gegessen. hmmmm.
Jetzt sitze ich wieder am PC und an einem Problem:
Ich habe ein kleines Progrämmchen geschrieben (unten), das, was Wunder, nicht arbeitet.
Programmfunktion:
- Anzeige eines Bildes (z. B. Hund.jpg)
- daneben Anzeige des Wortes ohne den ersten Buchstaben (hier: _und)
- darunter eine Tastatur mit Großbuchstaben
Der User soll nun auf den ersten Buchstaben (hier: H für H_und) klicken.
klickt er verkehrt, erscheint anstelle der Buchstaentaste ein trauriger Smiley.
klickt er richtig, erscheint ein lustiger Smiley, der Buchstabe wird angezeigt, das Programm wartet 5 Sekunden und die nächste Aufgabe kommt.
… leider arbeitet das Programm nicht. Genau gesagt, es funzt überhaupt nichts. Nicht einmal die Funktion wird aufgerufen.
Wer kann mit helfen?
Hans-Jürgen
Hier der Quellcode:
first\_letter
var dummy; //Platzhalter
var zuege=0; //Statistik der Klicks
var aktuelleAufgabe=1; //Nummer der momentanen Aufgabe
//zunächst werden alle Dateinamen ohne Extention aufgeführt
//(hier bitte ändern, Großbuchstaben werden in Kleinbuchstaben umgewandelt):
Datei = new Array("0", "Esel", "Hahn", "Hund", "Katze");
var SummeDatei = Datei.length; //Anzahl der Arrayfelder
DateinameBild = new Array("0"); //Dateinamen der Grafiken erstellen
Wort = new Array("0");
Buchstabe = new Array("0");
for (f=1;f=(SummeDatei-1)) {
dummy="grafik1/" + Datei[f] + ".jpg";
dummy.value.toLowerCase(); //Umwandeln in Kleinbuchstaben (Unixserver)
DateinameBild.push(dummy); //Dateinamen dem Arry DateinameBild anfügen
dummy= Datei[f];
dummy=dummy.substring(2,); //erster Buchstabe wird weggeschnitten
Wort.push(dummy); //Dateinamen dem Arry Wort anfügen
dummy= Datei[f];
dummy=dummy.substring(1,1); //erster Buchstabe wird übernommen
Buchstabe.push(dummy); //Dateinamen dem Arry Buchstabe anfügen
}
// \*\*\* jetzt wird alles gemischt
for (f=1;f=SummeDatei) {
var x = Math.ceil(Math.random()\*SummeDatei+1);
var y = Math.ceil(Math.random()\*SummeDatei+1);
dummy=DateinameBild[x];
DateinameBild[x]=DateinameBild[y];
DateinameBild[y]=dummi;
dummy=Wort[x];
Wort[x]=Wort[y];
Wort[y]=dummi;
dummy=Buchstabe[x];
Buchstabe[x]=Buchstabe[y];
Buchstabe[y]=dummi;
}
function testen(letter){
zuege=zuege+1; //zählt die Züge des Spielers
if (Buchstabe[aktuelleAufgabe]==letter) {
document.images[letter].src="grafik1/richtig.jpg";
dummy='\<font size="7" face="Comic Sans MS"\>\<strong\>'
dummy+=Buchstabe[aktuelleAufgabe]+ Wort[aktuelleAufgabe];
dummy+='\</strong\>\</font\>';
document.all.Loesung.innerHTML=dummy;
aktuelleAufgabe +=1;
window.setTimeout(BildschirmAktualisieren(), 5000); //wartet etwas und zeigt nächste Aufgabe
} else {
document.images[letter].src="grafik1/falsch.jpg";
}
}
function BildschirmAktualisieren(){
if (aktuelleAufgabe \> SummeDatei) {
document.images["Buchstabenanzeige"].src=Buchstabe[SummeDatei];
alert("S p i t z e \nDu hast es in " + zuege + " Zügen geschafft!!!\nIch gratuliere dir!!!")
} else {
document.images["Dateibild"].src=DateinameBild[aktuelleAufgabe];
dummy='\<font size="7" face="Comic Sans MS"\>\<strong\>'
dummy+='-' + Wort[aktuelleAufgabe];
dummy+='\</strong\>\</font\>';
document.all.Loesung.innerHTML=dummy;
}
}
…
WAT NU?
so geht ja nicht:
for (f=1;f=SummeDatei)
muss wohl so sein:
for (f=1;f==SummeDatei;f++)
dann hast du die var dummy und dummi … schreibfehler oder soll das so?
viel erfolg
Hallo KKO,
vielen Dank, dass du dir die Zeit genommen hast mein „Programm“ durchzusehen.
- Ich habe in den beiden for-Schleifen den Schleifenzähler ergänzt.
- Die 3 dummi-Variablen habe ich durch dummy ersetzt.
Die Ausführung ist die gleiche. Er springt immer noch nicht zur Funktion „BildschirmAktualisieren“, obwohl ich sie schon in body onload
aufrufe.
Wenn ich einen alert-Tag als erstes in die Funktion schreibe, wird er nicht ausgeführt.
Kann das sein, dass erst die Seite mit HTM aufgebaut werden muss, bevor ich sie mit JS verändere - den Befehl also nicht in onload geben darf?
Viele Grüße
Hans-Jürgen
hallo hans-jürgen,
bin nochmal drübergeflogen:
geht nicht: dummy.value.toLowerCase()
geht: dummy=dummy.toLowerCase()
dieses images.element gibt es nicht:
document.images["Buchstabenanzeige"]
wenn es immer noch nicht funkt, müsstes du nochmal den quelltext senden, wegen den änderungen.
gruß
klaus
Hallo Klaus,
vielen Dank für die super-gute Mitarbeit. Dein Programm läuft super
))
Damit die anderen Wer-Weiß-Was-User sich anschauen können, wie du das Problem gelöst hast, habe ich nachfolgend den Quelltext eingefügt:
div.out { font-size:50px; font-weight:900; Font-Family:"Comic Sans MS"; }
first\_letter
var dummy; //Platzhalter
var zuege=0; //Statistik der Klicks
var aktuelleAufgabe=0; //Nummer der momentanen Aufgabe
var SummeDatei =0;
var Buchstaben = new Array();
function start (){
var Datei = new Array("ziege", "esel", "hahn", "hund", "katze");
SummeDatei = Datei.length; //Anzahl der Arrayfelder
Aufgaben=new Array(SummeDatei);
Test=new Array(SummeDatei); var ok="no";
for (var i = 0; i \<=SummeDatei-1; i++){
while ( ok == "no"){
nr=Math.round(Math.random() \* (SummeDatei-1));
if (Test[nr] == undefined ){Test[nr]="ja";Aufgaben[i]=Datei[nr];ok="yes"}
}
ok="no";
}
document.images["Dateibild"].src="grafik1/"+ Aufgaben[aktuelleAufgabe] +".jpg";
dummy='\_' + Aufgaben[aktuelleAufgabe].substring(1,20);
document.getElementById('Loesung').firstChild.nodeValue=dummy;
} // ende function start
function testen(letter){
zuege=zuege+1; //zählt die Züge des Spielers
if (Aufgaben[aktuelleAufgabe].substring(0,1)==letter) { // Taste "K" bei Aufgabe "-atze" wurde gedrückt
document.images[letter].src="grafik1/richtig.jpg"; // lustiger Smiley erscheint im Tastenfeld
dummy=letter.toUpperCase() + Aufgaben[aktuelleAufgabe].substring(1,20);
document.getElementById('Loesung').firstChild.nodeValue=dummy;
aktuelleAufgabe +=1;
Buchstaben.push(letter);
window.setTimeout("BildschirmAktualisieren()", 1000); //wartet etwas und zeigt nächste Aufgabe
}
else{
document.images[letter].src="grafik1/falsch.jpg"; // trauriger Smiley erscheint im Tastenfeld
Buchstaben.push(letter);
}
}// end sub testen
function BildschirmAktualisieren(){
for (var i = 0; i \<=Buchstaben.length-1; i++){
document.images[Buchstaben[i]].src="grafik1/taste\_"+Buchstaben[i]+".jpg";
}
Buchstaben=new Array();
if (aktuelleAufgabe \>= SummeDatei) {
alert("S p i t z e \nDu hast es in " + zuege + " Zügen geschafft!!!\nIch gratuliere dir!!!")
}
else {
document.images["Dateibild"].src="grafik1/"+ Aufgaben[aktuelleAufgabe] +".jpg";
dummy='\_' + Aufgaben[aktuelleAufgabe].substring(1,20);
document.getElementById('Loesung').firstChild.nodeValue=dummy;
}
}
…