Abfrage immmer wahr
Martin Podemski
- javascript
0 jobo1 MudGuard
Hi!
Im folgenden Bespiel wird die Abfrage immmer wahr.
Hat das mit lokalen und globalen Variablen zu tun.
Ich verstehe das nicht so recht.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
<TITLE></TITLE>
<script type="text/javascript">
var UMS = '0'
function func(td) {
if (td = '0') {
UMS = '1';
} else {
UMS = '0';
}
document.getElementById('TF1').value = UMS ;
}
</script>
</HEAD>
<BODY>
<form>
<input type='text' id='TF1'>
<input type="button" value="TEST" onclick="func(UMS)">
</form>
</BODY>
</HTML>
Hallo,
eher:
UMS = '0', oder?
function func(td) {
if (td = '0') {
wieso soll denn td nicht = 0 sein? du setzt doch var UMS auf 0 und rufst onclick(func(0)). da ändert sich ja nix.
ein alert(td) in der "func" würde wohl helfen.
Gruß
jobo
wieso soll denn td nicht = 0 sein? du setzt doch var UMS auf 0 und rufst onclick(func(0)). da ändert sich ja nix.
Hi jobo,
klar beim ersten Klick ist die Abfrage wahr und UMS wird auf '1' gesetzt.
Beim zweiten Klick sollte die Abfrage somit falsch sein!
Das passiert aber nicht!
Hi,
Beim zweiten Klick sollte die Abfrage somit falsch sein!
die Abfrage, ob die Zuweisung eines festen (und im Booles'schen Sinne wahren) Wertes zu einer Variablen einen im Boole'schen Sinne wahren Wert ergibt, ist nur sehr selten das, was man machen möchte. Das Ergebnis ist nun mal immer das selbe, da der Wert ja fest ist.
Vielleicht möchtest Du statt der Zuweisung lieber eine Prüfung vornehmen?
Cheatah
Hallo,
Vielleicht möchtest Du statt der Zuweisung lieber eine Prüfung vornehmen?
recht hast du. mit alert(td) zu testen könnte zu beginn der funktion aber auch bei der fehlersuche helfen (;-).
Gruß
jobo
mit alert(td) zu testen könnte zu beginn der funktion aber auch bei der fehlersuche helfen (;-).
im Prinzip immer, in diesem speziellen Fall aber nicht, da der übergebene Wert ja ignoriert wird. Er wird bei if (td = '0') einfach überschrieben.
Hier hätte sicherlich ein Blick in die Firefox-JavaScript-Konsole mehr geholfen, darin werden solche Stellen angemahnt.
Hallo gast42!
im Prinzip immer, in diesem speziellen Fall aber nicht, da der übergebene Wert ja ignoriert wird. Er wird bei if (td = '0') einfach überschrieben.
Danke, also falscher Vergleichsoperator. Mit == klappt dann alles sofort.
Hier hätte sicherlich ein Blick in die Firefox-JavaScript-Konsole mehr geholfen, darin werden solche Stellen angemahnt.
Die schweigt zu der Geschichte.
Hier hätte sicherlich ein Blick in die Firefox-JavaScript-Konsole mehr geholfen, darin werden solche Stellen angemahnt.
Die schweigt zu der Geschichte.
auch wenn du "Warnungen" aktivierst?
Hallo,
Hier hätte sicherlich ein Blick in die Firefox-JavaScript-Konsole mehr geholfen, darin werden solche Stellen angemahnt.
Die schweigt zu der Geschichte.
auch wenn du "Warnungen" aktivierst?
naja, das alert hätte ihm zumindest gezeigt, dass sein UMS wieder erwarten immer bei 0 liegt bzw. sein td erstmal. das wäre zumindest schon mal ein hinweis mehr gewesen.
Gruß
jobo
Hi,
if (td = '0') {
Das Ergebnis der Zuweisung von '0' an td ist der zugewiesene Wert, also '0'.
Wenn dieser dann für das if zu einem Wahrheitswert konvertiert wird, gilt m.W., daß ein nichtleerer String zu true wird.
Also ist die Bedingung true.
Willst Du hier vielleicht einen Vergleich mit == anstelle einer Zuweisung mit = vornehmen?
cu,
Andreas
Hi MudGuard
Willst Du hier vielleicht einen Vergleich mit == anstelle einer Zuweisung mit = vornehmen?
Danke, Dich hatte ich leider überlesen ;o)
Das war genau der richtige Hinweis!
Jetzt klappts.