Announcement

Collapse
No announcement yet.

einblenden von "display:none"-Elementen mit JS

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • einblenden von "display:none"-Elementen mit JS

    Hallo Leute
    ich hab eine kleine Webseite mit einem etwas grösseren Problem. Anfangs ist oben nur ein Bild mit Menü zu sehen, aber sämtliche Menüinhalte befinden sich schon auf der Seite, und zwar in <div>s, die ich mit css ausgeblendet habe(display: none). Die grosse Idee meinerseits war nun diese, dass ein Menüklicken (href=#, minder elegant, ich weiss...) eine javascript function aufruft, die eine anfangs leere <div> (die nicht ausgeblendet ist), mit dem ausgeblendeten html des erwünschten Menupunktes füllt. Also so:

    function einblenden(){divID.innerHTML=unsichtbarID.innerHTM L;}

    Und das funktioniert. Aber....:
    ich bleib logisch, und machs kurz:
    mit dem Internet Explorer von Windows Vista (IE7 im folg.)kann ich die Seiten auf dem Apache Webserver von Ubuntu erfolgreich aufrufen.(LINUX zu Windows) Mit IE7 kann ich die Seiten auf einem IIS 5 unter Windows 2000 erfolgreich aufrufen(windows zu windows).
    Mit dem Firefox 3 unter Ubuntu8.10 (FU810)kann ich die Seiten auf dem windows 2000 (IIS 5) Server erfolgreich aufrufen, wenn ich das anfangs leere <div> mit einem "dummy" Zeichen,zB. X fülle.(also: auch windows zu LINUX möglich) Wenn die Seiten auf einem Apache 2 webserver liegen und ichs mit FU810 versuche,also von LINUX zu LINUX, krieg ich zwar die Seiten angezeigt, aber das Menüklicken hat keine Wirkung, ganz egal ob das zu füllende <div> anfangs leer ist oder nicht.

    Ich rufe immer so: http://192.168.0.x auf meinem kleinen Lokalnetz von Computern. Damit komm ich immer an, von Linux zu Windows und umgekehrt.

    Wenn Firefox-user unter Linux meine Seiten nicht sehen können, taugts net. Ich vermutete, dass Firefox von dem document object modell vielleicht doch eine genauere Syntax erwartet. Aber wie ist es denn möglich, dass die Daten von dem IIS 5.0 akzeptiert werden? Hat jemand etwas ähnliches erlebt? Eine Lösung des Problems wäre angenehm.
    mfg

  • #2
    Hallo,
    da Javascript IMMER auf dem Client läuft, hat dies nichts mit dem verwendeten Server zu tun.
    Im Endeffekt stellt sich mir die Frage: Warum der Aufwand mit dem Kopieren? Warum nicht einfach per "unsichtbarID.style.display = 'block';" den bisher verborgenen Container sichtbar machen?

    Gruß Falk

    P.S.: nach Javascript verschoben.
    Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

    Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

    Comment


    • #3
      Hi Falk und Forum
      U.a. deine immer sachlichen und konstruktiven Beiträge hier in Forum veranlassten mich zum Beitritt, und ich wurd nicht enttäuscht. Deine Lösung ist das einfachste, und es wird wirken. Kurz und gut: Danke. Ich bin zwar Programmierer, aber hab in Sachen Web nicht die grösste Erfahrung. Deine Lösung schwebte mir vor, aber ich dachte mir, dass man style-Sachen am besten doch in .css-dateien halten sollte, aber warum eigentlich. Alles klar.
      Leider bin ich nicht so konstruktiv und zielstrebig wie du. Wenn ich ein Mysterium entdecke, will ich es lösen, egal obs was einbringt oder nicht. Was ich weder dir noch dem Forum erzählen brauch, ist die Tatsache, dass meine Lösung mit AJAX vergleichbar ist, mit dem Unterschied, dass man im AJAX nicht innnerHTML=innerHTML sagt, sondern dem innerHTML eines Elementes den Anwortinhalt eines Request Objektes zuteilt. Deshalb MUSS idX.innerHTML=idYinnerHTML einfach auch funktionieren, oder meine Welt steht nicht mehr! Javascript läuft auf dem Klient, gut und klar, aber wenn der Webserver aus - irgendeinem verteufelten Grund - garbage an den Browser liefert, was denn? Ich hab in den Javascript Funktionen, die unter Apache laufen, zwei alerts reingelegt, um zu sehen ob die Funktionen überhaupt gerufen werden, eines vor und eins hinter der javascript-code. Nur das erste alert taucht auf, das zweite nicht. Angenommen, der Server hat hier Müll geliefert (und zwar liefert er nur Müll an Firefox, und keinen Müll an IE, das ist mir übrigens ganz unerklärbar), kommt der Browser hier nicht weiter und springt aus der Funktion, und liefert den zweiten alert nicht ab. Schluss damit, ich glaub dies gehört in einen anderen Teil des Forum. Welches?
      Tschüss und Danke
      Gerd

      Comment


      • #4
        Hallo,
        Originally posted by Sorgenkind View Post
        ...Deshalb MUSS idX.innerHTML=idYinnerHTML einfach auch funktionieren, oder meine Welt steht nicht mehr!
        Dann muß ich jetzt wohl deine Welt einreißen . idX.innerHTML=idYinnerHTML stimmt aus mindestens zwei Gründen nicht.
        Erstens kannst du in einem Container durchaus ein <script>-Tag platzieren, welches auch beim Rendern der Seite ausgeführt wird. Weist du jedoch einen solchen HTML-Code an idX.innerHTML zu, so wird der Script-Code nicht geparst und auch nicht ausgeführt, er wird einfach ignoriert. Siehe dazu auch meinen Blogbeitrag zu innerHTML und Javascript.
        Zum Anderen gibt es auch noch diverse Browser-Bugs, die es unmöglich machen den Code 1:1 von einem Container auf einen anderen zu übertragen. Siehe (ebenfalls in meinem Blog): innerHTML und die Select-Box

        Mglws. ist das o.g. ja auch ein Grund, warum deine Alert-Box nicht ankommt!?

        Gruß Falk
        Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

        Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

        Comment


        • #5
          Originally posted by Sorgenkind View Post
          ...Deine Lösung schwebte mir vor, aber ich dachte mir, dass man style-Sachen am besten doch in .css-dateien halten sollte, ...
          Das ist an sich auch kein Problem. Dann wird per JS nicht direkt der Style manipuliert, sondern nur die CSS-Klasse geändert.
          [highlight=javascript]
          ...
          unsichtbarID.className = 'menuActive';
          ...
          [/highlight]
          Wie diese Klasse dann dargestellt wird liegt einzig und allein beim CSS und nicht in der Verantwortung von JS.

          Gruß Falk

          P.S.: Übrigens Danke für die "Blumen"
          Zuletzt editiert von Falk Prüfer; 21.05.2010, 14:02.
          Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

          Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

          Comment


          • #6
            Hallo und danke für die Teilnahme
            Problem gelöst, und ich trau mirs fast nicht zu sagen. Es war ein Mysterium, ich hab auf de.selfhtml.org (gibts was besseres über html und javascript im internet?) etwas über html nachgelesen, und den Doc-Typen. Es war so, als ich vor Tagen den html-text schrieb, war ich müde, und wollte nicht die ganze "doctype"-Leier" abschreiben, hatte auch keine Vorlage dabei zum kopieren. Da hab ich das Wort "Transitional" einfach ausgelassen. Nachdem ich - vor ein paar Minuten- den HTML text geändert hab, und "Transitional//EN "> am Ende eingefügt habe, klappt es alles mit dem css-kopieren (das ist übrigens das einfachste, denn wenn ich den style in javascript verändert hätte, hätte ich ihn jedesmal zurücksetzen müssen, das wären schon viele extra Linien zum einfügen.)
            also , die Konklusion (aus diesem Fall):
            der Microsoft IIS server weiss, dass die html Verfasser Deppen sind. Es stand zwar nichts von "transitional", im Dokument, aber er sieht, das dynamisch HTML u. Links verwendet werden, und liefert alles richtig ab, an jeden Browser.(Firefox oder IE)
            Der Apache Server nimmt an, (fälschlich), die HTML Autoren haben Köpfchen,also wenn "Transitional" nicht erwähnt ist, brauchen wir offenbar keine Links, und meine Seite funktioniert daher nicht unter Apache, und jeder Browser kriegt "garbage" geliefert (und für den garbage war ich veranwortlich! Glückwunsch!)
            Da sieht man wieder einmal, wie der Mensch sich ẗ́äuschen kann. Ich dachte mir so: Apache, was ist denn das für ein Schrottprodukt?Aber würde nicht jeder so denken, wenns nur beim Apache net läuft?
            So was passiert nur mir, nicht ohne Grund heiss ich Sorgenkind.
            gruss
            Gerd
            Ps: eigentlich hätte ich anfangs den HTML Text beifügen sollen, dann hätten alle gesehen dass da was fehlt. Schwamm drüber, am nächsten mal dann....

            Comment

            Working...
            X