SilentHunter Geschrieben 16. Februar 2009 Teilen Geschrieben 16. Februar 2009 Hallo Gemeinde, ich muss am Freitag im Rahmen meines Studiums eine Klausur schreiben wo einfaches Javascript verlangt wird. Ich habe 2 Probleme mit 2 Unterschiedlichen Programmen. Programm 1: Das Programm soll einfach nur sagen, ob alles Ziffern sind oder nicht. Nach langen probieren, muss der Fehler irgendwo in der Logik dieser Zeile "if(inhalt < '0' || inhalt > '9')" liegen. Denn wenn ich statt dem "<" ein "=" mache, dann geht er in die If bedingung hinein, wenn ich eine 0 eingebe. Quelltext: <html> <head> <title>For-Schleife</title> <script type="text/javascript"> function gebeMeldung() { var inhalt=document.Eingabe.Textfeld.value; var i=0; var j=1; while(i < inhalt.length && j == 1) { if(inhalt < '0' || inhalt > '9') { j=0; alert("nur ZZZiffern"+j); } i++; } if (j==1) { alert ("Nur Ziffern"); } else { alert("Nicht nur Ziffern"); } } </script> </head> <body> <h1>Eingabe</h1> <form name="Eingabe"> <input type="text" name="Textfeld"></input> <input type="submit" value="Push" onClick="gebeMeldung()"></input> </form> </body> </html> Programm 2: Es sollen Matrikelnummern in ein eindimensionales Array "gespeichert" werden und ausgegeben werden. Das funktioniert auch tadellos. Dann soll einfach die erste Zahl ersetzt werden. Sprich aus der Matrikelnummer 12345678 soll 22345678 werden. Er macht es nicht und schreibt es einfach hinter die Matrikelnummer. Quelltext: <html> <head> <title>Array</title> </head> <body> <script type="text/Javascript"> var matrikel=new Array(); matrikel[0]="12345678"; matrikel[1]="12345679"; matrikel[2]="12345680"; var i=0; for(i=0; i < matrikel.length; i++) { document.write(matrikel +"<br>"); } document.write("<br>"); var i=0 for(i=0; i < matrikel.length; i++) { matrikel=matrikel +parseInt(10000000); document.write(matrikel +"10000000" +"<br>"); } </script> </body> </html> Beide Lösungen sind Lösungen aus der Vorlesung (Mitschrift) und müssen demnach bei meinem Dozenten funktioniert haben. Ich würde beides sehr ähnlich programmieren. Um nicht zu sagen exakt. Kann mir da jemand dabei helfen? Nach möglichkeit ohne das ich 3 neue Befehle und 5 weitere Verschachtelungen habe? Wie gesagt es sind ganz einfache Basics und ich bin froh wenn ich die so verstehe, dass ich sie mal auf ein anderes Beispiel anwenden kann Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
LordHexa Geschrieben 17. Februar 2009 Teilen Geschrieben 17. Februar 2009 Hallo SilentHunter, also zu "Programm 1": ich verstehe nicht so ganz, warum an dieser Stelle ein Alert gemacht werden soll: while(i < inhalt.length && j == 1) { if(inhalt[i] < '0' || inhalt[i] > '9') { j=0; alert("nur ZZZiffern"+j); } i++; } Lösungsvorschlag 1 wäre dieser: function gebeMeldung() { var inhalt=document.Eingabe.Textfeld.value; var i=0; var j=1; while(i < inhalt.length && j == 1) { if(inhalt[i] < '0' || inhalt[i] > '9') j=0; i++; } if (j==1) alert ("Nur Ziffern"); else alert("Nicht nur Ziffern"); } Mein zweiter Vorschlag wäre dieser: function gebeMeldung() { var inhalt=document.Eingabe.Textfeld.value; var i=0; while(i < inhalt.length) { if(inhalt[i] < '0' || inhalt[i] > '9') { alert ("Nicht nur Ziffern"); return; } i++; } //Falls die Schleife die Funktion nicht vorzeitig beendet hat, haben wir nur Zahlen in "inhalt" alert ("Nur Ziffern"); } Zweiteres ist zwar nicht unbedingt super schön, für diesen Zweck jedoch kurz und bündig Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
LordHexa Geschrieben 17. Februar 2009 Teilen Geschrieben 17. Februar 2009 Zu "Programm 2": Hier ist eigentlich nur das Problem, das du im Array die Matrikelnr als String speicherst. Somit hängst du einfach nur eine Zahl, in dem Fall die 10000000 and den String im jeweiligen Matrikel-Array-Index hinten dran. So wäre es richtig, wenn du die Matrikelnummer als String im Array hast: var i=0; var matrikel=new Array(); matrikel[0]= "12345678"; matrikel[1]= "12345679"; matrikel[2]= "12345680"; document.write("<b>Vorher:</b><br />"); for(i; i < matrikel.length; i++) { document.write(matrikel[i] +"<br>"); } document.write("<b>Nachher:</b><br />"); for(i=0; i < matrikel.length; i++) { matrikel[i] = parseInt(matrikel[i]) + parseInt("10000000"); document.write(matrikel[i] + "<br />"); } Greetz Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
SilentHunter Geschrieben 17. Februar 2009 Autor Teilen Geschrieben 17. Februar 2009 Ah super ich danke dir. Funktioniert alles tadellos. Musste sogar feststellen, dass Programm nicht mit dem IE läuft. Mozilla macht es anstandslos. Das alert("nur ZZZiffern"+j); hatte ich reingemacht, um zu sehen, dass er in die IF Anweisung geht. Nochmal recht herzlichen Dank! :bimei Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.