Supportnet Computer
Planet of Tech

Supportnet / Forum / Skripte(PHP,ASP,Perl...)

Javascript Problem





Frage

Hallo liebe Supportler Ich habe folgende Frage: function pxm() { var dpi = document.form.dpi.value var Bm = document.form.Bm.value var Hm = document.form.Hm.value var Bpxm = screen.width / dpi * m / screen.width var Hpxm = screen.height / dpi * m / screen.width if (document.form.m.checked == true) { var m = "2.54" var E = "cm" } else { var m = "25.4" var E = "mm" } if (isNaN(dpi) || isNaN(Bm) || isNaN(Hm)) { alert("Bitte Zahlen (!) eingeben...") } else { var pxB = "1" / Bpxm * Bm var pxH = "1" / Hpxm * Hm alert("Test: " + Bpxm) } } Für alert("Test: ) + Bpxm) wird nur "Test: NaN" ausgegeben... weshalb?! Ich komm nicht weiter... bin kein Profi aber das sollte doch machbar sein =( Danke für eure Hilfe mlg noopi

Antwort 1 von Proggi

entweder ist document.form.Bm.value kein Zahlenwert und dadurch kriegst du n fehler wenn du Zahlenwerte mit Stringwerten multiplizieren möchtest kriegst du die NaN als Wert der Variable.

also "1 " * 1 = NaN
(1 Leertaste *1)

Antwort 2 von noopi

Hallo

Danke für den Tipp! Aber:
Bm muss ein Zahlenwert sein, weil die abfrage
if (isNaN(Bm))
überprüft, ob es ein Zahlenwert ist, wenn nicht, wird
alert("Bitte Zahlen (!) eingeben...") ausgegeben!
Die zweite These mit den Strings schein plausibel...
Hab's aber mit einfacheren Beispielen getestet und es hat funktioniert!

Hat noch jemand ein Tipp?!
mlg

Antwort 3 von rfb

Wesentliche Frage: was sagt denn die Fehlerkonsole des Firefox?

Ansonsten kann ich nur raten:
Bei der ersten Verwendung von m ist es noch gar nicht initialisiert.

Antwort 4 von Friedel

Du hast zwar eine Funktion gepostet, aber nicht die Seite, in die die Funktion eingebaut ist. Wenn diese Funktion nicht aufgerufen wird, wird sie auch nicht ausgeführt. Und offensichtlich wird sie nicht aufgerufen, denn du schreibst nichts von Fehlermeldungen.

Zum ersten fehlen in diesem Script haufenweise Semikolons.

In Zeile 5 schreibst du
Zitat:
var Bpxm = screen.width / dpi * m / screen.width
Die Variable m wird aber erst in Zeile 8 oder 11 definiert. Spätestens dadurch würde die erste Fehlermeldung kommen und die Ausführung des Scripts würde abgebrochen werden.

In Zeile 6 wird wieder die Variable m verwendet, obwohl es die noch nicht gibt.

Antwort 5 von rfb

nochmal als Tipp am Rande:

Wenn du mit Zahlen rechnen willst, solltest du sie nicht als String deklarieren

Beispiel:
var m1 = "2.54";
var m2 = "25.4";
var summe=m1+m2;
alert(summe);

ergibt die Ausgabe den String
2.5425.4


var m1 = 2.54;
var m2 = 25.4;
var summe=m1+m2;
alert(summe);

ergibt hingegen die Ausgabe
27.94


Einige solcher Fehler kann die automatische Typumwandlung in JavaScript zwar abfangen, aber nicht immer klappt das und das gewünschte Ergebnis muss dabei auch nicht erscheinen.

Antwort 6 von noopi

naja jetzt funktioniert es jedenfalls... Danke für eure Hilfe!

<html><head>
<!-- Pete -->
<meta http-equiv="Content-Language" content="de-ch">
<title>Kleiner Umrechner...</title>
<script type="text/javascript">
function pxm() {
var dpi = document.form.dpi.value
var Bm = document.form.Bm.value
var Hm = document.form.Hm.value
if (document.form.m.checked == true) {
var m = 2.54
var E = "cm"
} else {
var m = 25.4
var E = "mm"
}
if (isNaN(dpi) || isNaN(Bm) || isNaN(Hm)) {
alert("Bitte Zahlen (!) eingeben...")
} else {
var Bpxm = screen.width / dpi * m / screen.width
var Hpxm = screen.height / dpi * m / screen.width
var pxB = 1 / Bpxm * Bm
var pxH = 1 / Hpxm * Hm
with (document) {
open();
write("<font face=\"Arial Narrow\">In der horizontalen solltest du <b>" + pxB + "</b> Pixel verwenden... (" + Bm + " " + E + ")<br>");
write("In der vertikalen solltest du <b>" + pxH + "</b> Pixel verwenden...(" + Hm + " " + E + ")<br></font>");
close();
}
}
}
</script>
</head><body>
<form name="form" action="">
<p><font face="Arial Narrow">Wie viele <i>DPI</i> hat dein Bildschirm?!</font></p>
<p><font face="Arial Narrow"><input type="text" name="dpi" size="20"></font></p>
<p><font face="Arial Narrow">Wie viele <i>cm/mm</i> in der Horizontalen möchtest du darstellen?!</font></p>
<p><font face="Arial Narrow"><input type="text" name="Bm" size="20"></font></p>
<p><font face="Arial Narrow">Wie viele <i>cm/mm</i> in der Vertikalen möchtest du darstellen?!</font></p>
<p><font face="Arial Narrow"><input type="text" name="Hm" size="20"></font></p>
<p><font face="Arial Narrow"><input type="checkbox" name="m" value="ON"> In <i>cm</i> rechnen! (Wenn leer, wird
in <i>mm</i> gerechnet!)</font></p>
<p><input type="submit" value=" ... Weiter ... " name="B1" onclick="pxm()"></p>
</form>
</body></html>


Nun fehlt nur noch etwas php das man es auch nutzen kann =/
mlg

Antwort 7 von noopi

Ahh und besoneren danke an Friedel ! Es hat nicht funktioniert, weil m zu spät definiert wurde…
Die „;“ sind jedoch nicht immer notwendig! Javascript ist dabei nicht so pingelig… wie bsp.w. PHP!

Antwort 8 von rfb

Zitat:
Die &#8222;;&#8220; sind jedoch nicht immer notwendig!
doch - und zwar um den Überblick zu behalten. Gerade weil JavaScript "nicht pingelig" ist bedarf die Programmierung in dieser Sprache besonderer Sorgfalt.

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: