Martin Podemski: Abfrage immmer wahr

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>  

  1. 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

    1. 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!

      1. 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

        --
        X-Self-Code: sh:( fo:} ch:~ rl:| br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
        X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes
        1. 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

          1. 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.

            1. 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.

              1. 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?

                1. 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

  2. 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

    --
    Warum nennt sich Andreas hier MudGuard?
    O o ostern ...
    Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.
    1. 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.