Frage zu confirm()
Stefan
- javascript
Guten Tag,
Ich soll einen BMI-Rechner für die Uni programmieren und jeder Aufgabe als einzelne script/css datei abspeichern(Das mach ich erst, wenn alles vollkommen funktiontstüchtig ist)
Die Aufgabe besteht darin die erste Funktion aufgabe() mit dem berechneten BMI zu erweitern. Dabei soll die Funktion berechneBMI() später extern abgespeichert werden sowie aufgabe_c() und die Funktion aufgabe_c() soll die Eingaben der von aufgabe() an berechneBMI() weitergeben.
Ich benutzte confirm() für die Nachricht und möchte beim klicken auf ok, dass aufgabe_c() ausgeführt wird. Passieren tut leider nichts. Die confirm-box funktioniert, nur wird sie nicht mit dem BMI erweitert nachdem man Sie bestätigt. Wo genau liegt mein Fehler? Hier einmal die HMTL:
<script type="text/javascript" >
/* Aufgabe A: Gibt eingegebene Daten in Popup wieder */
function aufgabe() {
var auslesen_Masse = document.getElementById("Masseingabe").value;
var auslesen_Gewicht = document.getElementById("Gewichteingabe").value;
confirm("Ihre Größe beträgt: " + auslesen_Masse + "cm \nIhr Gewicht: " + auslesen_Gewicht + "kg \n\nKlicken sie auf OK, wenn die Angaben richtig sind.");
}
</script>
<script>
/* Aufgabe B: Formel zur BMI-Berechnung */
var BMI = y/Math.pow(x,2);
function berechneBMI(){
return BMI;
}
</script>
<script>
/* Aufgabe C: Eingaben von Aufgabe A an B geben und Popup erweitern */
var x = document.getElementById("Masseingabe").value;
var y = document.getElementById("Gewichteingabe").value;
function aufgabe_c() {
var r = confirm("Ihre Größe beträgt: " + x + "cm \nIhr Gewicht: " + y + "kg \n\nKlicken sie auf OK, wenn die Angaben richtig sind.");
if (r === true){
/* 2 == oder 3 === ? */
berechneBMI(x,y);
alert("Ihre Größe beträgt: " + x + "cm \nIhr Gewicht: " + y + "kg \nIhr BMI beträgt: " +BMI);
}
}
</script>
</head>
<body>
<H1>BMI RECHNER</H1>
<form action="#">
<label for="Masseingabe">Geben sie Ihre Größe ein: </label>
<input id="Masseingabe" name="Groeße" type="number" min="100" max="220" step="0.5">cm </input>
</br>
<label for="Gewichteingabe">Geben sie Ihr Gewicht ein: </label>
<input id="Gewichteingabe" name="Gewicht" type="number" min="30" max="220" >kg </input>
</br>
Eingabe <button type="button" onclick="aufgabe();" id="berechnen"> bestätigen </button>
</br></br>
</form>
</body>
ps: die Konsoloe spuckt folgenden Fehler aus: Uncaught SyntaxError: Unexpected end of input
Ich bedanke mich schonmal für die Hilfe!
MfG.
Stefan
@@Stefan
ps: die Konsoloe spuckt folgenden Fehler aus: Uncaught SyntaxError: Unexpected end of input
Hach, Chrome.
Firefox ist da gesprächiger: SyntaxError: missing } after function body.
Ich hab hier ausnahmsweise mal deinen Code kopiert. Das nächste Mal bitte ein Online-Beispiel!
Und warum verlinkst du die Wiki-Startseite als „problematische Seite“? Ich mach das mal weg.
LLAP 🖖
Hallo Gunnar,
Ich bin neu hier, daher wusste ich das nicht 😀. und Danke für den Hinweis!
@@Gunnar Bittersmann
ps: die Konsoloe spuckt folgenden Fehler aus: Uncaught SyntaxError: Unexpected end of input
Hach, Chrome.
Ich bin mir nicht sicher, ob Chrome hier vielleicht den HTML-Syntaxfehler moniert? Das tut er nur, wenn das JavaScript im Spiel ist …
Jedenfalls ist <input>
ein leeres Element und darf kein End-Tag haben.
Die Maßeinheit sollte mit ins label
:
<label for="Masseingabe">Ihre Größe in Zentimeter:</label>
<input id="Masseingabe" name="Groeße" type="number" min="100" max="220" step="0.5">
Vermutlich tut’s auch
<label for="Masseingabe">Ihre Größe:
<input id="Masseingabe" name="Groeße" type="number" min="100" max="220" step="0.5">
cm
</label>
Ich hab die Beschriftung mal gekürzt.
Die Beschriftung „Geben sie … ein:“ ist visueller Müll. Nutzer dürften wohl wissen, dass ein Eingabefeld dazu da ist, um etwas einzugeben.
LLAP 🖖
Hallo Gunnar,
Ich hab das jetzt mal abgeändert. Das ganze ist auch noch nicht fertig und er Feinschliff kommt am Ende. Nur muss bis dahin erstmal alles funktionieren 😟
Mfg.
Stefan
Hallo Stefan,
Und in deinem nächsten Beitrag setzt du bitte nicht mehr die Startseite des Wikis als problematische Seite.
Bis demnächst
Matthias
@@Matthias Apsel
Und in deinem nächsten Beitrag setzt du bitte nicht mehr die Startseite des Wikis als problematische Seite.
Das passiert automatisch, wenn man im Wiki auf „Fragen“ clickt: die aktuelle Wiki-Seite wird als problematische gesetzt.
Der Fehler liegt bei uns.
LLAP 🖖
Hallo Gunnar Bittersmann,
Das passiert automatisch, wenn man im Wiki auf „Fragen“ clickt: die aktuelle Wiki-Seite wird als problematische gesetzt.
Was grundsätzlich richtig ist. Aber das Formular wird imho auch vorausgefüllt, wenn man als unangemeldeter eine Antwort verfasst.
Bis demnächst
Matthias
@@Matthias Apsel
Das passiert automatisch, wenn man im Wiki auf „Fragen“ clickt: die aktuelle Wiki-Seite wird als problematische gesetzt.
Was grundsätzlich richtig ist.
Das ist hier die Frage: Ist es das?
Oder sollte das Verlinken der aktuellen Wiki-Seite erst auf Interaktion durch den Nutzer (einen Click entfernt) geschehen?
LLAP 🖖
Hallo Gunnar Bittersmann,
Das ist hier die Frage: Ist es das?
Ist es.
Oder sollte das Verlinken der aktuellen Wiki-Seite erst auf Interaktion durch den Nutzer (einen Click entfernt) geschehen?
Es wurde genau deshalb gebaut, damit für Fragen zu einem Wikiartikel klar ist, um welchen Artikel es geht. Ein Click entfernt ist häufig ein Click zu weit.
Bis demnächst
Matthias
@@Matthias Apsel
Oder sollte das Verlinken der aktuellen Wiki-Seite erst auf Interaktion durch den Nutzer (einen Click entfernt) geschehen?
Es wurde genau deshalb gebaut, damit für Fragen zu einem Wikiartikel klar ist, um welchen Artikel es geht. Ein Click entfernt ist häufig ein Click zu weit.
Dann dürfen wir uns nicht wundern, warum das Feld „problematische Seite“ (welches dann übrigens falsch benannt ist) immer mit nicht problematischen Seiten gefüllt ist.
Das Herauslöschen der Voreinstellung in wirklich ein Click zu weit.
Um welchen Artikel geht es denn eigentlich auf der Startseite des Wikis?
Meine Meinung ist: Das Feature ist nicht richtig durchdacht.
LLAP 🖖
Hallo Gunnar Bittersmann,
Dann dürfen wir uns nicht wundern, warum das Feld „problematische Seite“ (welches dann übrigens falsch benannt ist) immer mit nicht problematischen Seiten gefüllt ist.
immer?
Wenn ich zu einem Wikiartikel eine Frage habe, ist dieser Wikiartikel zunächst die problematische Seite.
Um welchen Artikel geht es denn eigentlich auf der Startseite des Wikis?
Wir hatten schon Anfragen, warum die Startseite so und nicht anders gestaltet ist.
Meine Meinung ist: Das Feature ist nicht richtig durchdacht.
Meine Antwort ist: Mach einen Verbesserungsvorschlag (Das automatische Setzen zu entfernen führt zum vorherigen Zustand, der jetzige ist besser).
Bis demnächst
Matthias
Lieber Stefan,
Nur muss bis dahin erstmal alles funktionieren 😟
typischer Anfänger-Denkfehler. Es muss nicht funktionieren, sondern Du musst es verstanden haben!
Liebe Grüße,
Felix Riesterer.
@@Felix Riesterer
Nur muss bis dahin erstmal alles funktionieren 😟
typischer Anfänger-Denkfehler.
Ich sehe diesen aber vor allem in dem Teil, den du weggelassen hast:
[d]er Feinschliff kommt am Ende
Das heißt: nie.
LLAP 🖖
Hallo Gunnar Bittersmann,
Und warum verlinkst du die Wiki-Startseite als „problematische Seite“? Ich mach das mal weg.
Ich hab es dann mal für die Antworten ebenfalls weggemacht.
Bis demnächst
Matthias
Hallo Stefan!
Willkommen bei SelfHtml!
Zuallerst: Warum online-Beispiele besser als das Posten von Code sind
Ich habe Deinen Code einmal in eine HTMl-Datei kopiert und mit Rechtsklick Quelltext anzeigen den Quelltext angeschaut. Im Firefox wird flasches HTML-Markup rot dargestellt. Das sind bei die die schließenden </input>
-Tags. input ist ein Element mit Standalone-Tag.
das br-Element wird <br> anstelle von </br> geschrieben - bei mir funzt jetzt alles.
Herzliche Grüße
Matthias Scharwies
Hallo Matthias.
Danke für die Hilfe, ich werd wohl zukünftig eher firefox nehmen, wenn es um so etwas geht. Das war wirklich sehr hilfreich. Nur leider funktioniert das ganze immernoch nicht ganz so, wie gedacht. Ich verweise da mal auf meinen ursprünglichen Text, denn meine Funktionien berechneBMI und aufgabe_c machen momentan garnichts 😟
MfG.
Stefan
Lieber Stefan,
Hier einmal die HMTL:
nein, bitte als online-Beispiel!
Desweiteren ist der Code mit derart veralteten Mitteln erstellt, dass das bitte komplett überarbeitet wird! Wir verwenden heute keine onclick
-Attribute mehr, sondern vergeben solche Eventhandler dynamisch!
Im gerade frisch überarbeiteten Taschenrechner-Tutorial solltest Du Anregungen finden, wie man das macht. Dabei siehst Du dann auch die dynamische Einbindung von Eventhandlern in der Praxis.
Für das Online-Beispiel habe ich den Anfang gemacht: [jsFiddle]
Liebe Grüße,
Felix Riesterer.
Hallo Felix,
Ich muss mit den Mitteln arbeiten, die mir von den Vorlesungen zur Vefügung gestellt werden. Demnach werd ich mit den "veralteten" Mitteln weiter machen. Ich danke dir trotzdem für den Hinweis! 😀
MfG.
Stefan
Lieber Stefan,
Ich muss mit den Mitteln arbeiten, die mir von den Vorlesungen zur Vefügung gestellt werden.
nein, das stimmt nicht. Du sollst einen BMI-Rechner bauen. Dazu sollst Du lernen, wie Script-Dateien, CSS-Dateien und ein HTML-Dokument zusammenspielen. Das ist der Sinn Deiner Vorlesung.
Demnach werd ich mit den "veralteten" Mitteln weiter machen.
Das solltest Du nicht! Nur weil man Dir alten Stinkekäse eingepackt hat, musst Du kein miefendes Ergebnis abliefern!
Ich danke dir trotzdem für den Hinweis! 😀
Ich warne Dich davor, aus falsch verstandener Loyalität eine gewisse Lernresistenz zu entwickeln! Hier lernst Du, wie man's nach aktuellem Stand der Technik am besten tun kann. Dann kannst Du selbst entscheiden, wie Du Dein Ergebnis einreichen möchtest.
Liebe Grüße,
Felix Riesterer.
Hallo Felix,
Ich schau mir das ganze jetzt mal an. Und natürlich möchte ich keine Lernresistenz entwickeln, viel eher bin ich dankbar dafür neues zu lernen. Bei der Aufgabe wird jedoch erwartet, dass wir mit den von uns erarbeiteten Stoff arbeiten, damit der Prof. nachvollziehen kann, ob wir genau Diesen verstanden haben. Es gibt sicherlich schönere und bessere Lösungsansätze, zuerst muss ich aber den für mich aktuellen Stoff nachvollziehen und anwenden können bevor ich mich anderem widme.
MfG
Stefan
Lieber Stefan,
damit der Prof. nachvollziehen kann, ob wir genau Diesen verstanden haben.
keine Angst. Der Prof. will sehen, dass Du externe Script-Dateien und Stylesheets in einem HTML-Dokument referenzieren kannst und dass trotzdem die Programmlogik in JavaScript "funzioniert".
Es gibt sicherlich schönere und bessere Lösungsansätze, zuerst muss ich aber den für mich aktuellen Stoff nachvollziehen und anwenden können bevor ich mich anderem widme.
Du glaubst immer noch, dass unsere Lösungsansätze mit Deinem Material überhaupt nichts zu tun hätten, stimmt's? Weit gefehlt!
Lernziele:
Das haben wir hier alles auch - und obendrein technisch aktuell!
Liebe Grüße,
Felix Riesterer.
Servus!
Ich muss mit den Mitteln arbeiten, die mir von den Vorlesungen zur Vefügung gestellt werden. Demnach werd ich mit den "veralteten" Mitteln weiter machen.
Ich danke dir trotzdem für den Hinweis! 😀
Im Wiki gibt's schon nen BMI-Rechner.
Du kannst ja mal vergleichen, wie man das "heute" macht.
Felix hatte schon erwähnt:
addEventListener anstelle von onclick
output-Element anstelle von confirm() oder alert()
Herzliche Grüße
Matthias Scharwies