*Markus: (CSS) Visibility-Eigenschaft lässt sich nicht ändern

Hallo,

ich habe folgende Dateien:

index.php, welches diesen Link enthält:

<a href="javascript:opendisplay();">Zusätzliche Angaben</a>

javascript.js mit folgendem Inhalt:

  
var wahr = new Boolean(true);  
var falsch = new Boolean(false);  
var isVisible = falsch;  
  
function opendisplay()   {  
	  if (isVisible == falsch)   {  
	  	  isVisible = wahr;  
	  	  document.getElementById("navigation").visibility = 'visible';  
	  }  
	  else   {  
	  	  isVisible = falsch;  
	  	  document.getElementById("navigation").visibility = 'hidden';  
	  }  
}  

cssdata.css mit u.a. folgendem Inhalt:

  
div#navigation {  
  font-size: 0.5em;  
  min-width: 16em;  
  padding:0 1em;  
  border: 1px solid silver;  
  visibility:hidden;  
}  

Klicke ich auf den Link, soll das div "navigation" sichtbar werden. Klicke ich erneut darauf, soll das div wieder verschwinden. Die Funktion wird richtig aufgerufen. Ich hab dies mit alert-Popups überprüft (einmal erscheint "wahr", einmal "falsch"). Setze ich das div "navigation" per default auf "visible", erscheint auch dieses. Das heißt, dass diese Anweisungen document.getElementById("navigation").visibility = 'visible'; nicht ziehen. Die Frage ist, wieso?

Danke
Markus

  1. hallo,

    Anweisungen document.getElementById("navigation").visibility = 'visible'; nicht ziehen. Die Frage ist, wieso?

    da fehlt was stylisches.

    wie wärs mit: .style.visibility
    ?

    grüße

    --
    "Sir! We are surrounded!" - "Excellent! We can attack in any direction!"
    1. muuuuh,
      zitatzeichen vergessen -,-

      --
      "Sir! We are surrounded!" - "Excellent! We can attack in any direction!"
      1. Hallo,

        vielen Dank. So klappt's.

        Markus.

  2. Mahlzeit *Markus,

    abgesehen von Deinem eigentlichen - und ja bereits gelöstem - Problem ... gibt es irgendeinen vernünftigen Grund, warum Du so etwas tust???

    var wahr = new Boolean(true);
    var falsch = new Boolean(false);
    var isVisible = falsch;

    MfG,
    EKKi

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

      abgesehen von Deinem eigentlichen - und ja bereits gelöstem - Problem ... gibt es irgendeinen vernünftigen Grund, warum Du so etwas tust???

      keine Sorge, ich werde damit keine Flash-Intros schalten oder Musik auf einer Webseite einbinden.
      Aber wenn du's wissen willst geht es darum, ein Fenster mit Suchparametern, die standardmäßig nicht verändert werden müssen, auszublenden. Der Benutzer kann sich dennoch das Menü einblenden, und Suchparameter entfernen. Hat er kein Javascript aktiviert, was bei der Zielgruppe sehr unwahrscheinlich ist, bekommt er eben das volle Suchergebnis.

      Es hat schon Sinn, dass ich es so mache, und, mit Verlaub, in Zeiten von Ajax & Co. sind die Benutzer, die auf ihrer ewiggestrigen Ideologie, im Browser möglichst alles zu deaktivieren was dynamisch ist (Javascript), noch immer herumreiten, sind selbst schuld, wenn dann das eine oder andere nicht funktioniert.

      Markus

      1. Hallo,

        Aber wenn du's wissen willst geht es darum, ein Fenster mit Suchparametern, [...]

        Bist du Politiker? Das ist doch nicht die Antwort auf EKKIs Frage nach einem vernünftigen Grund, warun du sowas tust:

        var wahr = new Boolean(true);
        var falsch = new Boolean(false);
        var isVisible = falsch;

        Mich würde die richtige Antwort nämlich auch interessieren, habe selten einen sinnloseren Code gesehen. Nochmal genauer gefragt:

        1. Warum bemühst du eine separate Variable namens wahr, um darin nur true zu speichern?
        2. Warum bastelst du mit new Boolean ein Objekt um den Wert true?
        3. Warum treibst du denselben Aufwand mit einer Variable namens falsch?

        true und false sind doch schon fixfertige Werte, die man so verwenden kann wie sie sind. Kein vernünftiger Mensch würde sie erst mit new Boolean verpacken und ihnen deutsche Namen geben, bevor er sie endlich verwendet...

        Gruß, Don P

        1. Hallo,

          ok, ich wusste nicht, dass man in Javascript boolsche Variablen auch einfach wie normale Variablen benutzen kann, und dachte, man müsse die Variable erst mit einem Typ "belegen", aber nur mit true und false funktioniert es offensichlich auch. Ich war sowieso nicht begeistert von der Lösung, aber bin wahrscheinlich zu sehr Java gewöhnt, wodurch ich den Blödsinn so stehen ließ. Hab mich wohl von dem Selfhtml-Beispiel, wovon ich dieses Beispiel habe, einwickeln lassen, nachdem ich nach der Verwendung von boolschen Variablen im Zusammenhang mit Javascript suchte.

          Bist du Politiker? Das ist doch nicht die Antwort auf EKKIs Frage nach einem vernünftigen Grund, warun du sowas tust:

          Ich dachte, dass ich es bereits erklärt habe.
          Nochmal, welchen Sinn hat es, kostbaren Platz auf einer Webseite (den ich auch brauche) mit irgendwelchen Menüs zu verschwenden, die einem Benutzer ohnehin nur die Möglichkeit geben, die Suchabfrage (es geht ja hauptsächlich nur darum, Artikel zu suchen!) dahingehend zu minimieren, dass zu einem bestimmten Artikel eben nur weniger Informationen angezeigt werden?

          Würde dieses Menü dauerhaft eingeblendet werden, wäre mindestens der halbe Platz der Weboberfläche weg, was ja wohl außerordentlich dümmlich wäre bei einer Webseite, wo ich so viel Platz als möglich brauche, um vergleichende Suchergebnisse darstellen zu können.

          Ich bin zwar für jeden Tipp dankbar und bitte nicht falsch verstehen wenn ich sage, dass es mich wirklich nervt, wenn Leute, die das Endergebnis gar nicht kennen, ständig alles hinterfragen müssen. Ich weiß schon, was ich tue und ich bin auch sicher kein Anfänger (auch wenn mein Javascript nach so vielen Jahren offensichtlich gerade etwas eingerostet ist).

          Viele Grüße,
          Markus

          1. Ich bin zwar für jeden Tipp dankbar und bitte nicht falsch verstehen wenn ich sage, dass es mich wirklich nervt, wenn Leute, die das Endergebnis gar nicht kennen, ständig alles hinterfragen müssen. Ich weiß schon, was ich tue und ich bin auch sicher kein Anfänger (auch wenn mein Javascript nach so vielen Jahren offensichtlich gerade etwas eingerostet ist).

            Naja, das macht die Qualität deines Javascripts Codes - um mehr ging es eigentlich hier nicht - immer noch nicht sinnvoller. Du verwendest überflüssigerweise eine Variabel, für die es in JS schon einen Wert gibt.

            Struppi.

          2. Hallo,

            ok, ich wusste nicht, dass man in Javascript boolsche Variablen auch einfach wie normale Variablen benutzen kann, und dachte, man müsse die Variable erst mit einem Typ "belegen", aber nur mit true und false funktioniert es offensichlich auch.

            true und false sind keine Variablen, sondern fixe Werte, sogenannte Primitives. Dazu zählen auch Strings und Zahlen. Es gibt sie auch in Objektform (dann sind es keine Primitives mehr), z.B liefert String("Text") ein String-Objekt, während "Text" einfach ein String-Primitive ist, Boolean(false) liefert auch ein Objekt, ebenso wie Number(2134).

            Es gibt einen JavaScript Guru namens Douglas Crockford, von dem ich viel halte (Google findet seine Seiten). Der schreibt, dass man vor Klassennamen wie Boolean *immer* new notieren sollte und dass man vor allem new Boolean, new Number und new String gar nicht verwenden sollte.

            Ich kann mir nur einen Fall vorstellen, wo z.B. ein new Boolean() Sinn machen würde: Wenn man eine Variable unbedingt per reference weitergeben will bzw. muss. Wenn z.B. ein Array Primitives wie false enthält, und man es kopiert, dann enthält das neue Array ebenfalls wieder Primitives, keine Referenz auf den ursprünglichen Wert. Ändert man dann die Kopie, dann ändert sich das ursprüngliche Array nicht, was aber erwünscht sein kann. Ob das aber überhaupt mit Boolean funktioniert, habe ich nicht getestet...

            Ich bin zwar für jeden Tipp dankbar und bitte nicht falsch verstehen wenn ich sage, dass es mich wirklich nervt, wenn Leute, die das Endergebnis gar nicht kennen, ständig alles hinterfragen müssen.

            In solche Diskusionen mische ich mich nicht ein. JS oder nicht JS, das soll jeder halten, wie er will. Die Frage nach dem Sinn deines Codes ging auch gar nicht in diese Richtung. Es ging nur um die Objekt- vs. Primitive-Sache.

            Gruß, Don P

            1. Hallo,

              In solche Diskusionen mische ich mich nicht ein. JS oder nicht JS, das soll jeder halten, wie er will. Die Frage nach dem Sinn deines Codes ging auch gar nicht in diese Richtung. Es ging nur um die Objekt- vs. Primitive-Sache.

              Den Fehler habe ich natürlich schon korrigiert. Danke für den Hinweis.

              Markus

          3. Hi,

            Ich bin zwar für jeden Tipp dankbar und bitte nicht falsch verstehen wenn ich sage, dass es mich wirklich nervt, wenn Leute, die das Endergebnis gar nicht kennen, ständig alles hinterfragen müssen. Ich weiß schon, was ich tue

            Ja, sehen wir:

            ok, ich wusste nicht, dass man in Javascript boolsche Variablen auch einfach wie normale Variablen benutzen kann, und dachte, man müsse die Variable erst mit einem Typ "belegen", aber nur mit true und false funktioniert es offensichlich auch.

            MfG ChrisB

            --
            Light travels faster than sound - that's why most people appear bright until you hear them speak.
            1. Ich sah erst jetzt, dass sich EKKi nur auf das Javascript bezog und nicht auf die Thematik meiner Site. Das Kommentierte in EKKis Antwort las ich bisher gar nicht.

      2. Es hat schon Sinn, dass ich es so mache, und, mit Verlaub, in Zeiten von Ajax & Co. sind die Benutzer, die auf ihrer ewiggestrigen Ideologie, im Browser möglichst alles zu deaktivieren was dynamisch ist (Javascript), noch immer herumreiten, sind selbst schuld, wenn dann das eine oder andere nicht funktioniert.

        Mal abgesehen davon, dass es dir und jedem frei steht seine Internetseite so zu gestalten wie du möchtest (ein vorbildliche Seite ist diese), geht es nicht darum um irgendwelche ewiggestrigen eine Ideologie vertreten, sondern ob du als Anbieter es darauf ankommen lassen möchtest, wenn deine Seite bei potentiellen Besuchern (oder auch Bots) nur eingeschränkt funktioniert - wenn du diese Frage mit ja beantwortest, gibt es dagegen nichts zu sagen.

        Der Einsatz oder das Verzichten auf eine Technik, hat also nichts mit Ideologie zu tun, sondern damit ob du sie wirklich brauchst oder nicht.

        Und als User kann ich dir nur den Tipp geben, mal NoScript zu benutzen. "das Internet" wird dadurch schneller, angenehmer zu benutzen und nervige Seiten werden gar nicht erst angezeigt, es gibt aber meistens Alternativen und wenn nicht, läßt sich JS selektiv einschalten. Ich persönlich möchte NoScript nicht mehr missen.

        Struppi.

        1. Hallo,

          Mal abgesehen davon, dass es dir und jedem frei steht seine Internetseite so zu gestalten wie du möchtest (ein vorbildliche Seite ist diese), geht es nicht darum um irgendwelche ewiggestrigen eine Ideologie vertreten, sondern ob du als Anbieter es darauf ankommen lassen möchtest, wenn deine Seite bei potentiellen Besuchern (oder auch Bots) nur eingeschränkt funktioniert - wenn du diese Frage mit ja beantwortest, gibt es dagegen nichts zu sagen.

          Das kann ich definitiv mit Ja beantworten.

          Der Einsatz oder das Verzichten auf eine Technik, hat also nichts mit Ideologie zu tun, sondern damit ob du sie wirklich brauchst oder nicht.

          Ich dem Fall brauche ich diese Lösung, weil der Nutzen dadurch um so viel höher ist, dass ich mir damit eine etwaige Benutzereinschränkung gerne erkaufe.

          Und als User kann ich dir nur den Tipp geben, mal NoScript zu benutzen. "das Internet" wird dadurch schneller, angenehmer zu benutzen und nervige Seiten werden gar nicht erst angezeigt, es gibt aber meistens Alternativen und wenn nicht, läßt sich JS selektiv einschalten. Ich persönlich möchte NoScript nicht mehr missen.

          Bisher hatte ich zwar nicht nie Probleme mit Scripts, aber wenn wir gerade dabei sind; ich würde sehr gerne mal ein Plugin haben, wo ich für einzelne Websites Flash selektiv deaktivieren kann. Bisher gibt es zwar einige Plug-Ins, mit dessen Hilfe man Flash deaktivieren kann, aber keines davon war für meine Zwecke wirklich brauchbar, da man erstens nur das gesamte Flash einer Webseite entfernen konnte und nicht selektiv einzelne Flash-Einbettungen, und zweitens konnte man diesen Zustand auch nicht dauerhaft speichern, sodass beim nächsten Besuch wieder dieser Zustand vorhanden gewesen wäre.

          Viele Grüße,
          Markus

          1. ich würde sehr gerne mal ein Plugin haben, wo ich für einzelne Websites Flash selektiv deaktivieren kann. Bisher gibt es zwar einige Plug-Ins, mit dessen Hilfe man Flash deaktivieren kann, aber keines davon war für meine Zwecke wirklich brauchbar, da man erstens nur das gesamte Flash einer Webseite entfernen konnte und nicht selektiv einzelne Flash-Einbettungen, und zweitens konnte man diesen Zustand auch nicht dauerhaft speichern, sodass beim nächsten Besuch wieder dieser Zustand vorhanden gewesen wäre.

            Kann ich nicht bestätigen. bei No-Flash verbietest du alles und gibst dann domains frei.
            Aber es ist richtig, ich kann dort nicht einzelne Flash Inhalte steuern, wobei ich mich auch frage, ob so etwas überhaupt effizient ist.

            mfg Beat

            --
            ><o(((°>           ><o(((°>
               <°)))o><                     ><o(((°>o
            Der Valigator leibt diese Fische
            1. 'ǝɯɐu$ ıɥ

              Kann ich nicht bestätigen. bei No-Flash verbietest du alles und gibst dann domains frei.
              Aber es ist richtig, ich kann dort nicht einzelne Flash Inhalte steuern, wobei ich mich auch frage, ob so etwas überhaupt effizient ist.

              es gibt noch flashblock, damit werden zwar alle flash inhalte der seite geblockt, können jedoch per klick einzeln freigeschaltet werden, leider wird das nicht abgespeichert, alternativ kann man dann nur die komplette seite freigeben.

              ssnɹƃ
              ʍopɐɥs

              --
              Sleep is a poor substitute for caffeine.