falke: Timeout nur im sichtbaren div zünden

Hi,

möchte gern einen Timeout zünden in einem div aber nur wenn der div sichtbar ist. Doch aktuell zünden der einfach so egal ob der div sichtbar ist oder nicht.

momnetan sieht das so aus:

<div id ="content2" style="display:none"; width:320px; height:240px">Hier ist das erste Kapitel
<script language="JavaScript" type="text/javascript">
<!--
erste = setTimeout('weg()',4000);

function weg() {
document.getElementById("content2").style.display = "none";
document.getElementById("content3").style.display = "block";
}
//-->
</script>

<input type="button"  value="weiter2" onClick="daa()">
</div>

also es werden durch button click und zeitablauf andere divs sichtbar gemacht.

mfg falke

  1. wie kann ich fragen ob der div auf block gestellt ist?

    mfg falke

    1. Hallo,

      if (div.display == 'block'){alert ('ja');}

      gruss

      --
      no strict;
      no warnings;
      Ich weiss es nicht, aber ich bin mir nicht sicher.
      Gold kann man essen, es muss nur flüssig genug sein.
      1. also so klappts irgendwie nicht

        if (div.display == 'block')
        erste = setTimeout('weg()',2000);

        function weg() {
        document.getElementById("content2").style.display = "none";
        document.getElementById("content3").style.display = "block";

        1. Hi,

          also so klappts irgendwie nicht

          Du hast auch Eternius' Signatur »Ich weiss es nicht, aber ich bin mir nicht sicher.« beachtet? ;-)

          "div" ist nicht definiert und hat auch kein Unterobjekt "display".
          Greife auf das Element wie auch auf die anderen zu, wobei Du den style zunächst auch über Javascript setzen solltest.

          freundliche Grüße
          Ingo

          1. hi

            also so klappts irgendwie nicht
            Du hast auch Eternius' Signatur »Ich weiss es nicht, aber ich bin mir nicht sicher.« beachtet? ;-)

            übersehen

            "div" ist nicht definiert und hat auch kein Unterobjekt "display".
            Greife auf das Element wie auch auf die anderen zu,

            wobei Du den style zunächst auch über Javascript setzen solltest.

            ??

            habs mal so probiert:

            if (document.getElementById("content2").style.display = "block";)

            klappt aber nicht.

            falke

            1. Hallo falke.

              if (document.getElementById("content2").style.display = "block";)

              ---------------------------------------------------------^

              Damit weist du display den Wert block zu. Meintest du vielleicht "==" ?

              Gruß, Ashura

              --
              Selfcode: sh:( fo:) ch:? rl:( br:^ n4:& ie:{ mo:) va:) de:> zu:) fl:( ss:| ls:[ js:|
              30 Days to becoming an Opera8 Lover -- Day 16: Sessions
              Meine Browser: Opera 8.0 | Firefox 1.0.4 | Lynx 2.8.3 | Netscape 4.7 | IE 6.0
              [Deshalb frei! - Argumente pro freie Software]
              1. ja das mein ich wohl aber so klappt es auch nicht.

                mfg falke

                1. Hallo falke.

                  ja das mein ich wohl aber so klappt es auch nicht.

                  "Klappt nicht" lässt ein wenig zu wünschen übrig.
                  Wie genau sieht deine Funktion zum jetzigen Zeitpunkt aus?

                  Gruß, Ashura

                  --
                  Selfcode: sh:( fo:) ch:? rl:( br:^ n4:& ie:{ mo:) va:) de:> zu:) fl:( ss:| ls:[ js:|
                  30 Days to becoming an Opera8 Lover -- Day 16: Sessions
                  Meine Browser: Opera 8.0 | Firefox 1.0.4 | Lynx 2.8.3 | Netscape 4.7 | IE 6.0
                  [Deshalb frei! - Argumente pro freie Software]
                  1. hallo ashura,

                    deine wünsche

                    if (document.getElementById("content2").style.display == "block";)
                    erste = setTimeout('weg()',2000);

                    function weg() {
                    document.getElementById("content2").style.display = "none";
                    document.getElementById("content3").style.display = "block";
                    }

                    mfg falke

                    1. if (document.getElementById("content2").style.display == "block";)
                      erste = setTimeout('weg()',2000);

                      function weg() {
                      document.getElementById("content2").style.display = "none";
                      document.getElementById("content3").style.display = "block";
                      }

                      und die Fehlermeldung?

                      Struppi.

                      1. Hi,

                        und die Fehlermeldung?

                        ich vermute, da wird gar keine sein und Falke hat schlicht und einfach mein Posting übersehen oder nicht verstanden und vergessen nachzufragen.

                        freundliche Grüße
                        Ingo

                        1. Hallo,

                          oder das Script steht im head und wird nachdem laden ausgeführt, wobei das entsprechende DIV noch gar nicht existiert...

                          Mit freundlichem Gruß
                          Micha

                        2. und die Fehlermeldung?
                          ich vermute, da wird gar keine sein und Falke hat schlicht und einfach mein Posting übersehen oder nicht verstanden und vergessen nachzufragen.

                          Dann wär's mal an der Zeit ein wenig zu debuggen. ich hatte den Thread nur überflogen und diesen eigentlich fehlerfreien Code gesehen.

                          if (document.getElementById("content2").style.display == "block";)
                          erste = setTimeout('weg()',2000);

                          Oh Mann, guckt mal genauer hin!!!

                          Da ist ein semikolon zuviel.

                          Das einfachste und naheliegendste wäre sich einfach mal das ausgeben zu lassen was man nutzt:
                          alert(document.getElementById("content2").style.display);

                          ... aber eigentlich hätte ein Blick in die JS Konsole gereicht.

                          Struppi.

            2. Hi,

              wobei Du den style zunächst auch über Javascript setzen solltest.

              ??

              Du kannst nicht browserübergreifend eine CSS-Eigenschaft auslesen, die nur in einem Stylesheet gesetzt wurde.

              freundliche Grüße
              Ingo

          2. Hi,

            also so klappts irgendwie nicht
            Du hast auch Eternius' Signatur »Ich weiss es nicht, aber ich bin mir nicht sicher.« beachtet? ;-)

            "div" ist nicht definiert und hat auch kein Unterobjekt "display".
            Greife auf das Element wie auch auf die anderen zu, wobei Du den style zunächst auch über Javascript setzen solltest.

            ja sorry, du hast recht, ich hab einen übern durst getrunken.
            eigentlich hatte ich div.style.display im sinn.
            wobei div für ein vorhandenes div Objekt stehen sollte.

            gruss

            --
            no strict;
            no warnings;
            Ich weiss es nicht, aber ich bin mir nicht sicher.
            Gold kann man essen, es muss nur flüssig genug sein.
  2. Hi,

    dein problem denke ich ist dass das Javascript am Anfang ausgeführt wird, nicht erst wenn das Div sichtbar wird.

    sprich du musst kontinuierlich überprüfen, ob es jetzt sichtbar ist oder nicht.

    so:
    <div id ="content2" style="display:none"; width:320px; height:240px">Hier ist das erste Kapitel
    <script language="JavaScript" type="text/javascript">
    <!--
    function check()
    {
    if(document.getElementById("content2").style.display == "block")
    setTimeout("weg()",4000);
    else
    setTimeout("check()",500);
    }

    function weg() {
    document.getElementById("content2").style.display = "none";
    document.getElementById("content3").style.display = "block";
    }
    check();
    //-->
    </script>

    <input type="button"  value="weiter2" onClick="daa()">
    </div>

    wenn ich dich richtig verstanden habe sollte das so klappen