DIV Layer einmalig mit Schließ-Funktion

lazur2006

Grünschnabel
Hallo Zusammen,
ich möchte einen DIV Layer erstellen der nur einmal pro Besucher angezeigt wird in einer Session. Dieser soll über Klick zu schließen sein. Habe den Code soweit vorbeireitet nur bekomme ich irgendwie den Java Part nicht ans laufen.

PHP:
<?php session_start();
    if($_SESSION["welcome"] != true)
    { 
       $_SESSION["welcome"] = true;

       echo "<div id='layer'>Hier steht der Text, der nur 1x angezeigt werden soll.</br><span id='close'>X</span></div>";
    }  { ?>
    <script type="text/javascript">

    $(document).ready(function(){ 
      $('#close').click(function() { 
        $('#layer').fadeOut(500);
      });
      window.setTimeout(function() {
        win = $(window);
        $('#layer')
          .css({
            'width': layerWidth + 'px',
            'height': layerHeight + 'px',
            'top': '0px',
            'left': '-' + layerWidth + 'px'
          })
          .animate({
            'top': win.height() / 2 - layerHeight / 2,
            'left': win.width() / 2 - layerWidth / 2
        }, 0000);
      }, 0000);
    });
    </script>
    <?php } ?>
 
Hi,

also zunächsteinmal gehe ich davon aus, dass Du jQuery verwendest und JavaScript und nicht Java ;)

ich würde den JS Teil auch in eine Variable stecken, den PHP-Code zu unterbrechen finde ich sehr unübersichtlich.

Jetzt zu deinem eigentlichen Problem: Was passiert denn? Was kommt am Browser an? Sind in der Fehlerkonsole vom Browser irgendwelche Fehler? Die Konsole findest Du glaube ich meistens mit Strg+Shift+J ... Und was funktioniert nicht? Bzw was passiert wobei? Und was versuchst Du mit dem Timeout? Sieht mir sehr umständlich aus, außerdem verwendest Du, wenn man nach dem Code hier geht, zwei Variablen, die nicht deklariert worden sind (layerWIdth und layerHeight)

Wenn Du mir die Informationen gibst, kann ich dir sicherlich helfen

LG
noeden
 
Also der Div Layer erscheint bei aufrufen der Seite, also er liegt über dem Rest der Seite und verdeckt somit alles. Darin soll später etwas dargestellt werden und durch klicken auf ein X kann der Layer geschlossen werden.
Dieser soll aber während des gesamten Zeitraum des Besuchs auch geschlossen bleiben. Bedeutet ich arbeite mit einer Session die dem User eine ID zuordnet.
Das eigentliche Problem besteht nicht in der Darstellung des DIV Layers, sondern ist meiner Meinung nach die übergabe vom Javascript in den Span Tag. Heißt, die CLICK-function hat auf das X irgendwie keine Auswirkungen.
Hier mal der gesamte Code.

PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Unbenanntes Dokument</title>
<style type="text/css">
#layer {
    position: absolute;
    left: 0px;
    top: 0px;
    height: 100%;
    width: 100%;
    background-image: url(Bilder/bgface.png);
    background-repeat: repeat;
    text-align: center;
    vertical-align: middle;
}
</style>
</head>
<?php session_start();
if($_SESSION["welcome"] != true)
{ 
   $_SESSION["welcome"] = true;

   echo "<div id='layer'>Hier steht der Text, der nur 1x angezeigt werden soll.</br><span id='close'>X</span></div>";
}  { ?>
<script type="text/javascript">

$(document).ready(function(){ 
  $('#close').click(function() { 
    $('#layer').fadeOut(500);
  });
  window.setTimeout(function() {
    win = $(window);
    $('#layer')
      .css({
        'width': layerWidth + 'px',
        'height': layerHeight + 'px',
        'top': '0px',
        'left': '-' + layerWidth + 'px'
      })
      .animate({
        'top': win.height() / 2 - layerHeight / 2,
        'left': win.width() / 2 - layerWidth / 2
    }, 0000);
  }, 0000);
});
</script>
<?php } ?>


<body>
</body>
</html>
 
Hast Du denn Fehler in der JavaScript-Konsole vom Browser? Solltest Du den Firefox benutzen, lade Dir Firebug und schau da in die Console, solltest Du Chrome benutzen, drücke einfach mal STRG+SHIFT+J
 
Ja, habe ich bereits gemacht und finde keinen Fehler.
Also vom Code an sich ok, nur das da irgendwas anderes nicht dran stimmt.
Hab Firebug drauf.
 
hast du die ids layer oder close vielleicht mehrmals vergeben? Kannst Du mir einen Link oder den Quellcode von der Htmlseite schicken? Dann könnte ich dir weiterhelfen.

Notfalls auch per PN
 
Zurück