Stylesheet- Div einblenden mit $_get

Cosmoflamme

Quellcode-Schubser
ID: 269515
L
31 Dezember 2006
485
76
Hallo zusammen!
Ich hätte eine kleine Frage an euch.
Ein zusätzlicher Div-Container ist zunächst mit {display: none;} ausgeblendet,und wird dann mit dem Klick auf den Link erst eingeblendet.

Code:
<html>
<head>
<title></title>
<?php
if ($_GET['anzeigen']==1) { echo ('<link rel="stylesheet" type="text/css" href="anzeigen.css">'); }
else { echo ('<link rel="stylesheet" type="text/css" href="nichtanzeigen.css">'); }
?>
</head>
...

Html
Code:
<a href="foo.php?anzeigen=1">Div anzeigen</a>

Ist das mit der $_GET Abfrage von der Sicherheit her so okay,oder muss ich noch was einfügen?
Grüssle
Cosmoflamme
 
Von der Sicherheit her is das ok.
Man muss nur maximal über die Sinnvollheit sprechen :mrgreen:

Wieso lässt du das Div, um das es eigentlich geht, hier aber nicht im Code mit drinsteht, nicht direkt ausgeben bzw. lässt es direkt weg? Da du eh einen Request opferst, brauchst du dafür ja kein extra Stylesheet.

Eine andere Alternative wäre ein Anzeigen/Ausblenden mit JavaScript. In diesem Fall nimmst du die CSS-Eigenschaft display, dafür sparst du dir aber den zusätzlichen Request ein.
 
wenn ichs richtig verstanden hab kannste das auch mit nem simplen selektor (css3!) lösen:
Code:
#hidden { display: none; }
#hidden:target { display: block; }

HTML:
<a href="#hidden">Anzeigen!</a>
<div id="hidden">Versteckter Inhalt</div>
 
Mit jQuery:
HTML:
<div id="foo">
  <a href="">Anzeigen!</a>
  <div style="display: none;">Versteckter Inhalt</div>
</div>
<script type="text/javascript">
$('#foo a').click(function() {
    $(this).parent().find('div').css('display', 'block');
    return false;
});
</script>
 
Mit jQuery:
HTML:
<div id="foo">
  <a href="">Anzeigen!</a>
  <div style="display: none;">Versteckter Inhalt</div>
</div>
<script type="text/javascript">
$('#foo a').click(function() {
    $(this).parent().find('div').css('display', 'block');
    return false;
});
</script>

Oder über die ID ansprechen:
(Vorher natürlich jQuery einbinden!)
HTML:
<a href="" id="show">Anzeigen!</a>
<div style="display: none;" id="div">Versteckter Inhalt</div>
<script type="text/javascript">
$('#show').click(function() {
    $("#div").css('display', 'block');
});
</script>

bzw. Wofür ist das "return false;" gut? :)
 
bzw. Wofür ist das "return false;" gut? :)
Ohne das funktioniert es nicht ;)

Ohne "return false;" wird der Link ausgelöst. href="", also wird die aktuelle URL neu geladen und der Text verschwindet gleich wieder, nachdem der Browser fertig geladen hat.

edit:
Deine Lösung hat halt den Nachteil, dass sie nicht so einfach kopiert werden kann, weil du beide IDs anpassen musst.

Bei meiner Lösung machst du aus "#foo a" ein ".foo a" (hätt ich eigentlich gleich machen können :doh:) und kannst das HTML-Konstrukt (id durch class ersetzen) 10x im Code einbauen und der jQuery-Code muss nicht kopiert werden, sondern macht alle 10 funktionsfähig.