Fiffi: auto reload auswählen

Hallöchen zusammen.
Ich möchte Besuchern auf einer meiner WEB-Seiten ermöglichen, auszuwählen ob er ein automatisches Reload der Seite (z.B. alle 2 Sekunden) oder ob er kein automatisches Reload der Seite haben möchte.

Ich hab ein JS-Script gefunden das dieses ermöglicht. Aber leider nur per link. Da werden 2 Links angezeigt:

<body onload="reloadcheck()">  
  
<a href="#" onclick="reloadcheck('1')">Auto reload aktivieren</a><br />  
<a href="#" onclick="reloadcheck('0')">Auto reload deaktivieren</a><br />  
</body>

Gibt es nicht die Möglichkeit das, statt 2 Links, ein Button angezeigt wird, der je nach Status, seinen Wert/Beschriftung wechselt?

Also: Beim Besuch der Seite: Button: "Auto Reload an?".
Dann wenn dieser gedrückt wurde (reload wird gemacht), der Button anzeigt: "Auto Reload aus?".
Dann der Button wieder gedrückt wurde (reload wird gestoppt), der Buton anzeigt: "Auto Reload an?"

da gibts den JS-Befehl OnChange... ja. Aber wie sag ich dem Button das er auch seinen Absende-Wert so ändert das er (simpel ausgedrückt), die Werte der OnKlick=..... bekommt?

Ich hoffe ich hab mich verständlich ausdrücken könne. Falls der komplette JS-Code gebraucht werden sollte liefer ich den gerne nach.

Gruss Fiffi

  1. Grüße,

    Ich hoffe ich hab mich verständlich ausdrücken könne. Falls der komplette JS-Code gebraucht werden sollte liefer ich den gerne nach.

    den bastelst du selbst - und ich würde dir vom completten neuladen abraten. das ist einfach - aber sicher, dass es anders nicht geht?

    wie viel zeit bist du bereit in das lernen zu investieren? vllt könnten wir hier was zusammen basteln, wenn du etwas kreativität mitbringst. erzähl mal was du vorhast.
    MFG
    bleicher

    --
    __________________________-

    FirefoxMyth
    1. Hallöchen,

      den bastelst du selbst - und ich würde dir vom completten neuladen abraten. das ist einfach - aber sicher, dass es anders nicht geht?

      Welchen Grund gibs denn, einen automatischen-reload nicht zu  nutzen?
      Bei den heutigen DSL-Geschwindigkeit dürfte das kein Problem mehr sein.
      Ok. es würde dadurch mehr Traffic erzeugt werden. Aber wäre das schlimm?

      Den automatischen-reload wollte ich dem Nutzer anbieten, da sich der Inhalt der Seite schnell ändern kann. Aber das auch an bestimmten Tagen und Zeiten.
      Da sich manche User beschwert hatten bei mir, das sie selber immer manuell F5 drücken müssen, wollte ich diesen eben die Wahl lassen: autom-reload anschalten oder abschalten. Wobei der default wert eben KEIN autom-reload ist.

      Gruss Fiffi

      1. Grüße,

        Welchen Grund gibs denn, einen automatischen-reload nicht zu  nutzen?
        Bei den heutigen DSL-Geschwindigkeit dürfte das kein Problem mehr sein.

        es geht nciht um die anbindung des "empfängers" - es geht darum, dass der server durchaus mehr als 2 sec. brauchen könnte die daten zu liefern. oder hast du einen eigenen mit gigabytleitung gemietet?

        Den automatischen-reload wollte ich dem Nutzer anbieten, da sich der Inhalt der Seite schnell ändern kann. Aber das auch an bestimmten Tagen und Zeiten.

        wie viel ändert scih den? an sich ist deine anforderung easy - click auf "reload alle 2 sec" taste löst einen setInterval() der nach 2 secunden die "eigeandresse" aufruft und einen parameter speichert (coockie wobei cih sessionstorage empfehlen würde) setzt und eine extra funktion die onload überprüft ob der gleiche interval noch mal durchlaufen werden muss.

        aber es wäre vltl sinvoller NUR die daten die sich ändern anzufordern - zB mit AJAX. das ist was du zB bei eBay siehst - die zeit und preis werden upgedatet ohne dass die ganze seite neugeladen wird..
        MFG
        bleicher

        --
        __________________________-

        FirefoxMyth
  2. Liebe(r) Fiffi,

    grundsätzlich ist es eine gute Idee, wenn Bedienelemente, die ohne JavaScript nicht nutzbar sind, mittels JavaScript überhaupt erst ins Dokument eingefügt werden.

    <body onload="reloadcheck()">

    <a href="#" onclick="reloadcheck('1')">Auto reload aktivieren</a><br />
    <a href="#" onclick="reloadcheck('0')">Auto reload deaktivieren</a><br />
    </body>

      
    Das ist so ein Fall, wo man besser im <head> oder am Ende des <body> ein <script>-Element notiert, welches eine externe JavaScript-Datei nachlädt, aus der heraus dann diese Dinge ins Dokument geschrieben werden.  
      
    Grundsätzlich kannst Du einem Button ein onclick-Event zuweisen (was machst Du bei Besuchern, die mit der Tastatur Deine Seite bedienen?), welches dann in Abhängigkeit der Buttonbeschriftung Deine Einstellung hin- und herschaltet.  
      
    Liebe Grüße,  
      
    Felix Riesterer.
    
    -- 
    ie:% br:> fl:| va:) ls:[ fo:) rl:| n4:? de:> ss:| ch:? js:) mo:} zu:)
    
    1. Hallo lieber Felix,

      Grundsätzlich kannst Du einem Button ein onclick-Event zuweisen (was machst Du bei Besuchern, die mit der Tastatur Deine Seite bedienen?), welches dann in Abhängigkeit der Buttonbeschriftung Deine Einstellung hin- und herschaltet.

      An Besucher die per Tastatur meine Seite Bedienen hab ich gar nicht gedacht. Und wenn ich drüber nach denke, glaube ich auch nicht das ich das berücksichtigen muss.

      ich bin über ein JS-Code gestolpert der die Button-Beschriftung ändert:

      <html>  
        <head>  
      <script type="text/javascript">  
      <!--  
      function changevalue()  
      {  
        if (document.test.b1.value=="Ja")  
        {  
          document.test.b1.value="Nein";  
        }  
        else  
        {  
          document.test.b1.value="Ja";  
        }  
      }//-->  
      </script>  
      </head>  
        <body>  
        
      <form  action="code.php" name="test" method="GET">  
        
      <input type="button" value="Ja" name="b1"  onclick="changevalue()" ></input>  
          </form>  
        </body>  
      </html>
      

      Wie bekomme ich es nun hin, das der Button den automatischen reload aktiviert, bzw de-aktiviert? Wie das die schon erwähnten Links das machen.

      Gruss Fiffi

      1. Lieber Fiffi,

        ich bin über ein JS-Code gestolpert der die Button-Beschriftung ändert:

        und verstanden hast Du ihn überhaupt nicht, stimmt's? In diesem Forum verlangt man von Dir, dass Du Dein Problem selbst (auf englisch "self" wie in SELFHTML) lösen willst, ohne dass man Dir fertigen Code vor die Füße wirft.

        Liebe Grüße,

        Felix Riesterer.

        --
        ie:% br:> fl:| va:) ls:[ fo:) rl:| n4:? de:> ss:| ch:? js:) mo:} zu:)
        1. Hallo liber Felix,

          und verstanden hast Du ihn überhaupt nicht, stimmt's? In diesem Forum verlangt man von Dir, dass Du Dein Problem selbst (auf englisch "self" wie in SELFHTML) lösen willst, ohne dass man Dir fertigen Code vor die Füße wirft.

          Wenn ich es verstanden hätte, dann würde ich ja nicht hier fragen. Oder? :-)

          Ich will ja keinen fertigen Code vor die Füsse geworfen kommen, sondern evtl. mir jemand einen Tip gibt, wie ich mit mein vorhaben umsetzen kann.

          SELF ist mir geläufig, da ich SELF einiges gelernt hatte. Aber ohne Tips hilft SELF manchmal nicht. Zumindest bei mir :-)

          Lieben Gruss Fiffi

          1. Lieber Fiffi,

            und verstanden hast Du ihn überhaupt nicht, stimmt's?

            Wenn ich es verstanden hätte, dann würde ich ja nicht hier fragen. Oder? :-)

            Deine Frage war aber zu allgemein, um sich auf ein spezielles Problem zu beschränken. Wenn Du nicht sagst, bis wohin Dein Verständnis reicht, dann klingen Hilferufe nach "postet mir die fertige Lösung!".

            Liebe Grüße,

            Felix Riesterer.

            --
            ie:% br:> fl:| va:) ls:[ fo:) rl:| n4:? de:> ss:| ch:? js:) mo:} zu:)
            1. Hallo Felix,

              Deine Frage war aber zu allgemein, um sich auf ein spezielles Problem zu beschränken. Wenn Du nicht sagst, bis wohin Dein Verständnis reicht, dann klingen Hilferufe nach "postet mir die fertige Lösung!".

              Wenn es da ein Missverständnis gibt, möchte ich mich dafür entschuldigen, denn so eine Reaktion kenn ich so nicht von dir.

              Okay, ich versuch mein Anliegen noch mal zu beschreiben:
              Der obige JS-Code wechselt beim klicken auf den Button seine Beschriftung von JA auf NEIN und umgekehrt.

              Kann ich dem obigen JS-Script auch sagen das es auch zwei unterschiedliche JS-Aktionen durchführt ?

              zb:

              <script type="text/javascript">  
              <!--  
              function changevalue()  
              {  
                if (document.test.b1.value=="Ja")  
              JETZT FÜRHE DEN JS-CODE AUS: onclick="reloadcheck('1')"  
                {  
                  document.test.b1.value="Nein";  
              DANN FÜHRE DEN ANDEREN JS-CODE AUS: onclick="reloadcheck('0')"  
                }  
                else  
                {  
                  document.test.b1.value="Ja";  
              FÜHRE JS-CODE AUS: onclick="reloadcheck('1')"  
                }  
              }//-->  
              </script>
              

              Wenn ich mich nun wieder mal falsch ausgedrückt haben sollte, dann frage ich besser nicht mehr hier :-(

              Grüsse Fiffi

              1. Mahlzeit Fiffi,

                [code lang=javascript]<script type="text/javascript">
                <!--

                HTML-Kommentare haben innerhalb von <script>-Elementen *absolut gar nichts* verloren.

                function changevalue()

                Wieso jetzt eigentlich eine Funktion namens "changevalue()"? Ich dachte, Deine Funktion heißt "reloadcheck()"?

                Diese musst Du einfach entsprechend erweitern, so dass - in Abhängigkeit davon, ob als Parameter '0' oder '1' (Wieso eigentlich als String und nicht als numerischer Wert?) übergeben wurde - die Beschriftung des Links (Wieso eigentlich ein Link?) geändert wird.

                JETZT FÜRHE DEN JS-CODE AUS: onclick="reloadcheck('1')"

                Welchen Code jetzt? Die Zuweisung eines Funktionsaufrufs zu einem Eventhandler? Oder den Funktionsaufruf an sich?

                Vielleicht solltest Du auch einfach Dein Anliegen nochmal rein fachlich (komplett ohne Code usw.) darlegen ... vermutlich hast Du Dich da nämlich total verrannt und schaffst es deshalb nicht, Dein Komplettproblem in einzelne, triviale Teilprobleme zu zerlegen.

                Wenn ich mich nun wieder mal falsch ausgedrückt haben sollte, dann frage ich besser nicht mehr hier :-(

                Doch, doch - Du musst lediglich bedenken, dass Deine Leser nur den Code kennen, den Du hier zeigst und größtenteils *nicht* in der Lage sind, Deine Gedanken und Absichten und Wünsche zu lesen ... :-)

                MfG,
                EKKi

                --
                sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
                1. Hallo,

                  Vielleicht solltest Du auch einfach Dein Anliegen nochmal rein fachlich (komplett ohne Code usw.) darlegen ... vermutlich hast Du Dich da nämlich total verrannt und schaffst es deshalb nicht, Dein Komplettproblem in einzelne, triviale Teilprobleme zu zerlegen.

                  das könnte sein, und auch die schon angesprochene Formulierung in Pseudocode, die anscheinend bei weniger versierten Fragestellern sehr beliebt ist, ist in den allermeisten Fällen eher hinderlich für die Erklärung des Problems. Sie lässt nur ahnen, dass der OP von der Existenz bestimmter Möglichkeiten weiß; in vielen Fällen haben sie aber nichts mit seinem Problem zu tun und bringen diejenigen, die helfen möchten, nur auf eine falsche Fährte.

                  Daher ist es oft wirklich das Beste, man schildert sein Anliegen in normaler Alltagssprache, und nicht in Form von Code-Fragmenten. Fachbegriffe sollte man verwenden, wenn man sie kennt und sich über deren Bedeutung sicher ist - andernfalls, wenn man unsicher ist, sollte man auf das Fachwort lieber verzichten. Ich kenne das von meiner Mutter: Wenn sie mir am Telefon von einem PC-Problem erzählt, benutzt sie gern mal Fachbegriffe, die sie irgendwo gelesen hat und von denen sie *glaubt*, dass sie in der Situation passend sind. Das macht das Verstehen aber manchmal eher noch schwerer.

                  Wenn ich mich nun wieder mal falsch ausgedrückt haben sollte, dann frage ich besser nicht mehr hier :-(
                  Doch, doch - Du musst lediglich bedenken, dass Deine Leser nur den Code kennen, den Du hier zeigst und größtenteils *nicht* in der Lage sind, Deine Gedanken und Absichten und Wünsche zu lesen ... :-)

                  Deswegen ist es einmal mehr wichtig, als erstes zu erklären, was man *erreichen möchte*, und nicht, welchen Code man verwendet hat. Das ist erst sinnvoll, wenn der Helfer die Randbedingungen und das Ziel verstanden hat.

                  So long,
                   Martin

                  --
                  "Mutti, hier steht, das Theater sucht Statisten. Was sind Statisten?" - "Das sind Leute, die nur rumstehen und nichts zu sagen haben." - "So wie Papa?"
                  Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
              2. Lieber Fiffi,

                wie Ekki bereits geschrieben hat, mag meine für Dich unerwartete Reaktion tatsächlich darauf zurückzuführen sein, dass ich Deine Beschreibung so garnicht verstanden habe. Lass es mich nochmal versuchen.

                zb:

                <script type="text/javascript">

                <!--
                function changevalue()
                {
                  if (document.test.b1.value=="Ja")
                JETZT FÜRHE DEN JS-CODE AUS: onclick="reloadcheck('1')"
                  {
                    document.test.b1.value="Nein";
                DANN FÜHRE DEN ANDEREN JS-CODE AUS: onclick="reloadcheck('0')"
                  }
                  else
                  {
                    document.test.b1.value="Ja";
                FÜHRE JS-CODE AUS: onclick="reloadcheck('1')"
                  }
                }//-->
                </script>

                  
                OK. Ich schreibe das einmal für mich um.  
                  
                `<script type="text/javascript">`{:.language-html}~~~javascript
                //<![CDATA[  
                  
                    function changevalue(param) {  
                        var b1 = document.test.b1;  
                  
                        if (b1 && b1.value.toString().match(/^ja/i)) {  
                            b1.value = "Nein, auf keinen Fall!";  
                            b1.onclick = function () {  
                                return reloadcheck(true);  
                            };  
                        }  
                  
                        if (b1 && b1.value.toString().match(/^nein/i)) {  
                            b1.value = "Ja, bitteschön.";  
                            b1.onclick = function () {  
                                return reloadcheck(); // ob mit oder ohne false ist beides false  
                            };  
                        }  
                    }  
                //]]>
                ~~~`</script>`{:.language-html}  
                  
                
                > Wenn ich mich nun wieder mal falsch ausgedrückt haben sollte, dann frage ich besser nicht mehr hier :-(  
                  
                Wir lernen alle immer wieder dazu. Das ist unvermeidlich - hoffentlich.  
                  
                Liebe Grüße,  
                  
                Felix Riesterer.
                
                -- 
                ie:% br:> fl:| va:) ls:[ fo:) rl:| n4:? de:> ss:| ch:? js:) mo:} zu:)
                
                1. Hallo lieber Felix,
                  nochmals lieben dank das du dich so um mich kümmerst :-)

                  Auch an Ekki für seine Stellungsname :-)

                  Ich poste jetzt mal den gesamten Code *ohh jehh

                  Ich möchte folgendes erreichen:
                  Der Botton seine Beschriftung ändern und reload: AN oder reload AUS ausführen.

                  Gruss Fiffi

                  <html>  
                    <head>  
                  <script type="text/javascript">  
                  	var cookie = {  
                  	// return value if the name is not stored in document.cookie  
                  	defaultReturnValue: null,  
                  	// this should be true if you want to be sure, that all your special characters (like ä, ö, ü, ², µ, €, \n, \t, ...) are treated in a safe way - but with this option enabled the string stored in the cookie can get much longer  
                  	secureEncoding: true,  
                  	  
                  	update: function(){  
                  		var cString = document.cookie.toString();  
                  		var werte = cString.split(";");  
                  		for (var i = 0; i < werte.length; i++){  
                  			var wert = werte[i].split("=");  
                  			var name = this.decode(wert[0].replace(/^\s+/, ""));  
                  			var value = this.decode(wert.slice(1).join("="));  
                  			this[name] = value;  
                  		}  
                  		return this;  
                  	},  
                  	  
                  	getValue: function(name){  
                  		this.update();  
                  		if (typeof(this[name]) == "string") return this[name];  
                  		return this.defaultReturnValue;  
                  	},  
                  	  
                  	setValue: function(name, value, att){  
                  		//att can contain this attributes: expire, domain, path, secure  
                  		if (!att) att = {};  
                  		var insert = this.encode(name) + "=" + this.encode(value);  
                  		if (att.expire && att.expire.constructor == Date){  
                  			insert += ";expires=" + att.expire.toGMTString();  
                  		}  
                  		if (typeof(att.expire) == "string" && att.expire){  
                  			insert += ";expires=" + att.expire;  
                  		}  
                  		if (typeof(att.domain) == "string" && att.domain){  
                  			insert += ";domain=" + att.domain;  
                  		}  
                  		if (typeof(att.path) == "string" && att.path){  
                  			insert += ";path=" + att.path;  
                  		}  
                  		if (att.secure){  
                  			insert += ";secure";  
                  		}  
                  		document.cookie = insert + ";";  
                  		return this;  
                  	},  
                  	  
                  	deleteValue: function(wert, att){  
                  		if (!att) att = {};  
                  		att.expire = new Date(0);  
                  		this.setValue(wert, "", att);  
                  		if (typeof this[wert] == "string") this[wert] = false;  
                  		return this;  
                  	},  
                  	encode: function encode(str){  
                  		if (this.secureEncoding) return str.replace(/([^a-z0-9])/ig, function(m, f){return "+" + f.charCodeAt(0).toString(36) + "/"});  
                  		return str.replace(/(%|=|;)/g, function(match, f){return "%" + {"%": "%%", "=": "%_", ";": "%."}[f];});  
                  	},  
                  	decode: function decode(str){  
                  		if (this.secureEncoding) return str.replace(/\+([a-z0-9]+?)\//g, function(m, f){return String.fromCharCode(parseInt(f, 36));})  
                  		return str.replace(/%(%|_|.)/g, function(match, f){return {"%": "%", "_": "=", ".": ";"}[f];});  
                  	}  
                  };  
                    
                  	function reloadcheck(wert){  
                  	var Value = cookie.getValue("reload");  
                  	if (Value != null) { // Reload wurde konfiguriert und findet nun alle VALUE-Sekunden statt  
                  		var time=Value*2000; //Millisekunden 1000= 1 Sek.  
                  		setTimeout('location.reload(true)',time);  
                  		}  
                  	  
                  	if (wert == '1'){ // Reload wird gesetzt  
                  		var name = "reload";  
                  		var value = "2";  
                  		cookie.setValue(name, value);  
                  		location.reload(value);  
                  	}		  
                  	  
                  	if (wert == '0'){ // Reload wird gelöscht  
                  		cookie.deleteValue("reload");  
                  	}  
                  }  
                  	</script>  
                    
                    
                  <script type="text/javascript">//<![CDATA[  
                    
                      function changevalue(param) {  
                          var b1 = document.test.b1;  
                    
                          if (b1 && b1.value.toString().match(/^ja/i)) {  
                              b1.value = "Nein, auf keinen Fall!";  
                              b1.onclick = function () {  
                                  return reloadcheck(true);  
                              };  
                          }  
                    
                          if (b1 && b1.value.toString().match(/^nein/i)) {  
                              b1.value = "Ja, bitteschön.";  
                              b1.onclick = function () {  
                                  return reloadcheck(); // ob mit oder ohne false ist beides false  
                              };  
                          }  
                      }  
                  //]]></script>  
                  </head>  
                  <body>  
                    
                  <form  action="felix_code.php" name="test" method="GET">  
                  <input type="button" value="Ja" name="b1"  onclick="changevalue()" ></input>  
                    
                  </form>  
                  </body>  
                  </html>
                  
                  1. Lieber Fiffi,

                    da passen zwei Dinge noch nicht wirklich zusammen:

                    function reloadcheck(wert){

                    ...
                    if (wert == '1'){ ... }

                    if (wert == '0'){ ... }
                    ...
                        function changevalue(param) {
                                ... return reloadcheck(true);
                                ... return reloadcheck();

                      
                    Der Vergleich `if (variable == 'string')`{:.language-javascript} ist in Deinem Fall nicht unproblematisch. JavaScript nimmt intern einen Vergleich vor, indem es im Falle von "Äpfeln und Birnen" (sprich Boolean und String) vorher eine Typumwandlung durchführt. Hier soll nun true mit '1' und false mit '0' zusammenpassen. Das tut es in Deinem Fall (eigentlich) auch.  
                      
                    Besser zu lesen und für die Projektplanung in der Zukunft: `if (wert) {...}`{:.language-javascript}  
                    Hier wird ein Leerstring, ein String mit "0" (auch mehrere Nullen), eine "echte" Zahl null (oder negativ), ein undefined, ein leeres Objekt und ein false als \_nicht\_ zutreffend erkannt.  
                    Dagegen wird eine Zahl größer null, ein nicht leerer String (der nicht ausschließlich aus 0-Ziffern besteht!), irgendein Objekt mit mindestens einer Eigenschaft oder Methode und ein true als zutreffend erkannt.  
                      
                    Das Gegenstück notierst Du so: `if (!wert) {...}`{:.language-javascript}  
                      
                    Tja, nun ist die Frage was \_genau\_ bei Dir nicht "funzt", und was stattdessen passiert (inklusive Fehlermeldungen in der Konsole).  
                      
                    Liebe Grüße,  
                      
                    Felix Riesterer.
                    
                    -- 
                    ie:% br:> fl:| va:) ls:[ fo:) rl:| n4:? de:> ss:| ch:? js:) mo:} zu:)
                    
                    1. Hallöchen Felix,
                      komme leider erst heute dazu, zu antworten.

                      Ich hab das ganze mit einem Iframe und meta-refresh gelöst.

                      Den refresh starte bzw stoppe ich erstmal selber per php.
                      Da es sich um eine Online-Spiel Tabelle handelt, die eh nur dann gebraucht wird, wenn ein Spiel stattfindet, reicht dies aus.

                      Aber lieben Dank für deine helfende Hand

                      Liebe Grüsse Fiffi

                    2. Aber aber, Felix!

                      if (wert) {...}

                      Hier wird [...] ein String mit "0" (auch mehrere Nullen), eine "echte" Zahl null (oder negativ), [...] ein leeres Objekt [...] als _nicht_ zutreffend erkannt.

                      Das stimmt nicht.

                      Dagegen wird eine Zahl größer null, ein nicht leerer String (der nicht ausschließlich aus 0-Ziffern besteht!), irgendein Objekt mit mindestens einer Eigenschaft oder Methode [...] als zutreffend erkannt.

                      Das stimmt so auch nicht.

                      Wer hat dir nur diese falschen Aussagen auch noch als "fachlich hilfreich" markiert?
                      Beim Auswerten einer Zeichenkette als wahr/falsch mit if (wert) {...} gilt vielmehr folgendes:

                      • jeder nicht leere String ergibt true – auch wenn er nur Nullen enthält
                      • jedes existierende Objekt ergibt true – auch wenn es leer ist, d.h. keine Eigenschaften hat
                      • jede "echte" Zahl ungleich 0 ergibt true – auch wenn sie negativ ist

                      Beweis:

                      if ( "0" ) alert( !!"0" ); /* true */  
                      if ( {} )  alert( !!{} );  /* true */  
                      if ( -1 )  alert( !!-1 );  /* true */
                      

                      Gruß, Don P

                      1. Wie gesagt, geht die direkte Typumwandlung zu Boolean true/false wie folgt:

                        • jeder nicht leere String ergibt true – auch wenn er nur Nullen enthält
                        • jedes existierende Objekt ergibt true – auch wenn es leer ist, d.h. keine Eigenschaften hat
                        • jede "echte" Zahl ungleich 0 ergibt true – auch wenn sie negativ ist

                        Aufpassen muss man allerdings bei Vergleichen von Zeichenketten mit == wie z.B.

                        if ( "000\n\t" == false ) alert( "000\n\t" == false ) /* true! */

                        Hier erfolgt intern zunächst eine Umwandlung zur Zahl, was für "000\n\t" dann die Zahl 0 ergibt, und 0 gilt natürlich als false, so dass "000\n\t" == false wieder wahr wird.

                        Deshalb wird auch empfohlen, auf Vergleiche mit true oder false ganz zu verzichten, also nur if(wert) zu notieren, bzw. !!wert zu verwenden, wenn man z.B. in einer Zuweisung oder einem Ausdruck unbedingt einen booleschen Wert braucht:

                        var bool = !!wert;

                        Hier funktioniert die Umwandlung auf jeden Fall wie oben beschrieben.

                        Gruß, Don P