Pascal: Objekt mit Cookie dauerhaft ausblenden, bis Änderung erfolgt

Hallo,

ich möchte gerne mithilfe einer Checkbox ein Textfeld ausblenden. Das funktioniert so auch. Allerdings möchte ich auch, dass sich ein Cookie die "Einstellung" merkt, bis das Häkchen aus der Checkbox genommen wird.

Der Code sieht so aus:

  
  
  
<script type="text/javascript">  
function readCookie () {  
        var a = document.cookie;  
        if ( a == 'checkk=checked')  
                {window.location = "site1.html"}  
        else  
                {window.location = "site2.html"};  
}  
  
var input = document.cookie;  
 if ( input == 'checkk=checkk')  
  {document.getElementById('datepicker').style.display='none';}  
 else  
  {document.getElementById('datepicker').style.display='block';};  
}  
  
function writeCookie () {  
 var input = new Date();  
 input = new Date(input.getTime() + 30000000000);  
 document.cookie='checkk=checked; expires=' + input.toGMTString();  
}  
</script>  
<script type="text/javascript">  
function showHide (datepicker) {  
 var style = document.getElementById(datepicker).style  
  if (style.visibility == "hidden")  
   style.visibility = "visible";  
  else  
   style.visibility = "hidden";  
}  
</script>  
  
Datum ausblenden <input type="checkbox" id="checkk" onClick="showHide('datepicker'); writeCookie();" />  
  
<div class="demo">  
<p>Datum: <input type="text" id="datepicker" style="visibility:visible;"></p>  
</div>  

Der Cookie "funktioniert" aber nicht. Kann mir jemand helfen?

Gruß

--
Pascal
  1. Hallo Pascal,

    na Du bist ja ein seltsamer Keksbäcker:

    <script type="text/javascript">
    function readCookie () {
            var a = document.cookie;
            if ( a == 'checkk=checked')
                    {window.location = "site1.html"}
            else
                    {window.location = "site2.html"};
    }

    var input = document.cookie;
      if ( input == 'checkk=checkk')
      {document.getElementById('datepicker').style.display='none';}
    else
      {document.getElementById('datepicker').style.display='block';};
    }

    function writeCookie () {
    var input = new Date();
    input = new Date(input.getTime() + 30000000000);
      document.cookie='checkk=checked; expires=' + input.toGMTString();
    }
    </script>

    Gruß aus Berlin!
    eddi

    1. Hallo,

      <script type="text/javascript">
      function readCookie () {
              var a = document.cookie;
              if ( a == 'checkk=checked')
                      {window.location = "site1.html"}
              else
                      {window.location = "site2.html"};
      }

      var input = document.cookie;
        if ( input == 'checkk=checkk')
        {document.getElementById('datepicker').style.display='none';}
      else
        {document.getElementById('datepicker').style.display='block';};
      }

      function writeCookie () {
      var input = new Date();
      input = new Date(input.getTime() + 30000000000);
        document.cookie='checkk=checked; expires=' + input.toGMTString();
      }
      </script>

      Gruß aus Berlin!
      eddi

      Ja, Das habe ich schon als Vorlage gehabt. Vorher stand drin 'link=link1'. Ich dachte, das sind 2 Variablen.

      Wie funktioniert das denn? Was muss denn da in meinem Fall rein?

      Gruß

      --
      Pascal
      1. Re:

        Kann ein wie folgt gesetzter Cookie

        document.cookie='checkk=checked; expires=' + input.toGMTString();

        jemals den Wert 'checkk=checkk' haben?

        Gruß aus Berlin!
        eddi

        1. Hallo,

          Re:

          Kann ein wie folgt gesetzter Cookie

          document.cookie='checkk=checked; expires=' + input.toGMTString();

          jemals den Wert 'checkk=checkk' haben?

          Okay, verstehe, es geht um einen Wert, dachte, das sind IDs.

          Wie wärs denn damit?

          function readCookie () {  
                  var a = document.cookie;  
                  if ( a == 'checkbox=checked')  
                          {window.location = "site1.html"}  
                  else  
                          {window.location = "site2.html"};  
          }  
            
          var input = document.cookie;  
           if ( input == 'checkbox=checked')  
            {document.getElementById('datepicker').style.display='none';}  
           else  
            {document.getElementById('datepicker').style.display='block';};  
          }  
            
          function writeCookie () {  
           var input = new Date();  
           input = new Date(input.getTime() + 30000000000);  
           document.cookie='checkbox=checked; expires=' + input.toGMTString();  
          }  
          
          

          Geht aber auch nicht. Was muss da denn im Fall einer Checkbox für ein Wert rein?

          Gruß

          --
          Pascal
          1. Re:

            function readCookie () {

            var a = document.cookie;
                    if ( a == 'checkbox=checked')
                            {window.location = "site1.html"}
                    else
                            {window.location = "site2.html"};
            }

            var input = document.cookie;
            if ( input == 'checkbox=checked')
              {document.getElementById('datepicker').style.display='none';}
            else
              {document.getElementById('datepicker').style.display='block';};
            }

            function writeCookie () {
            var input = new Date();
            input = new Date(input.getTime() + 30000000000);
            document.cookie='checkbox=checked; expires=' + input.toGMTString();
            }

              
            Funktioniert doch völlig korrekt. Vermutlich aber hast Du beim Programmieren nur anderes Cookies zusätzlich noch. Das lässt sich ganz einfach mit `alert(document.cookie)`{:.language-javascript} überprüfen. Daraus resultiert aber ein allgemeines Problem für Deinen Code:  
              
            ~~~javascript
            document.cookie='checkbox=checked'  
            document.cookie='juxbox=bal'  
            alert(document.cookie)
            

            Ausgabe: checkbox=checked; juxbox=bal

            Vergleicht man das in JavaScript nun mit 'checkbox=checked' stellt man fest, dass es nicht das selbe ist. Die Ausgaben zwischenzeitlich sich mit einem einfachen alert() auszugeben, kann sehr viel Zeit sparen. ;)

            Gruß aus Berlin!
            eddi