falke
über ein button id sichtbar machen
- javascript
hallo Leute,
eigentlich ganz einfach aber irgendwas klappt wohl nich.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Page title</title>
</head>
<body>
<?
if(isset($_GET['start2'])){?>
<script language="JavaScript" type="text/javascript">
<!--
setTimeout('weg()',0000);
function weg() {
document.getElementById("content1").style.display = "block";
}
//-->
</script>
<? }?>
<form action="stopgo.php" method="GET">
<input type="button" name="start2" value="weiter">
</form>
<div id="content1" style="display:none; width:320px; height:240px">Hier ist das erste Kapitel</div>
</body>
</html>
mfg falke
Hi über,
setTimeout('weg()',0000);
function weg() {
document.getElementById("content1").style.display = "block";
}
Was willst du damit bezwecken? Zu dem Zeitpunkt wo der Timeout aufgerufen wird, ist die Funktion doch noch gar nicht definiert, du müsstest also den Timeout nach der Funktion schreiben.
Wenn du allerdings gar keine Zeitverzögerung willst, warum nutzt du dann überhaupt einen Timeout? Schreib doch einfach direkt in eine Zeile nach der Definition der Funktion:
weg();
Oder lasse gleich die ganze Funktion weg und schreibe direkt den Code hin, der ausgeführt werden soll.
Soweit die Theorie, allerdings wird alles nicht funktionieren, da zum Zeitpunkt wo dieser Javascript Code ausgeführt wird das Element mit der ID "content1" noch gar nicht existiert. Du müsstest also entweder das Javascript nach unten, also hinter das Element verschieben, oder den Aufruf der Funktion so gestalten:
window.onLoad = weg;
<div id="content1" style="display:none; width:320px; height:240px">Hier ist das erste Kapitel</div>
Da du aber anscheinend eh mit PHP arbeitest, frage ich mich, warum du nicht mit PHP die Fallunterscheidung einbaust und warum du dich auf so eine unsichere Technik wie Javascript verlassen willst.
Was spricht gegen:
<?php
$display = (isset($_GET['start2'])) ? "display:block;" : "display:none";
?>
Und weiter unten:
<div id="content1" style="[code lang=php]<?php echo $display; ?>
width:320px; height:240px">Hier ist das erste Kapitel</div>[/code]
Dann sollte das auch auf jeden Fall funktionieren und nicht davon abhängig sein, ob der User Javascript aktiviert hat oder nicht - insbesondere wenn es um die vermittlung von Inhalten geht, solltest du dich nicht auf eine Technik verlassen, die deaktiviert sein kann.
MfG, Dennis.
hallo dennis
Was willst du damit bezwecken? Zu dem Zeitpunkt wo der Timeout aufgerufen wird, ist die Funktion doch noch gar nicht definiert, du müsstest also den Timeout nach der Funktion schreiben.
wo ich es auch hinschreibe es klappt noch nicht.
und bei einem anderen script scheint es egal zu sein ob zuerst der aufruf erfolt oder die Funktion, bei der div - dekleration bin ich mir nicht ganz sicher, aber das könnte ja zu den angesprochenden Unsicherheiten von javascript gehören.
ich möchte einfach nur das auf Knopfdruck dieser div sichtbarwird
später noch das er für eine bestimmte zeit sichtbar bleibt welche mann durch ein weiteren button aber beenden kann und zum nächsten div
gelangt.
Fällt dir sonst noch etwas auf, denn eigentlich müsste es mit meiner bisherigen Technik klappen.
Wäre sehr gut wenn ich wüsste woran es liegt.
Wenn du allerdings gar keine Zeitverzögerung willst, warum nutzt du dann überhaupt einen Timeout? Schreib doch einfach direkt in eine Zeile nach der Definition der Funktion:
weg();
hab ich auch grad probiert aber bisher klappt halt noch nichts.
Da du aber anscheinend eh mit PHP arbeitest, frage ich mich, warum du nicht mit PHP die Fallunterscheidung einbaust und warum du dich auf so eine unsichere Technik wie Javascript verlassen willst.
Was spricht gegen:
<?php
$display = (isset($_GET['start2'])) ? "display:block;" : "display:none";
?>
wohl noch nichts aber wozu dient der Doppelpunkt?
>
> Und weiter unten:
>
> `<div id="content1" style="[code lang=php]<?php echo $display; ?>`{:.language-html} width:320px; height:240px">Hier ist das erste Kapitel</div>[/code]
werd das gleich auch mal testen!
mfg falke
Hi falke,
<?php
$display = (isset($_GET['start2'])) ? "display:block;" : "display:none";
?>
>
> wohl noch nichts aber wozu dient der Doppelpunkt?
Das ist eine [alternative Syntax für Kontroll Strukturen](http://de2.php.net/manual/de/control-structures.alternative-syntax.php) - manchmal recht praktisch, da es einfach kürzer ist, du könntest aber auch genauso gut in der Langform schreiben:
~~~php
<?php
if(isset($_GET['start2']))
{
$display = "display:block;";
}
else
{
$display = "display:none;";
}
?>
MfG, Dennis.
hi again,
ja jetzt erinnere ich mich wieder, hab ich schonmal gesehen.
Ich werd das jetzt mal umsetzten und mich dann melden.
mfg falke
also,
wenn ich die : variation nehme ist das div von vornerein sichtbar und wenn ich die andere Variation nehme passiet per klick darauf leider auch nichts.
<html>
<body>
<?php
if(isset($_GET['start2']))
{
$display = "display:block;";
}
else
{
$display = "display:none;";
}
?>
<form action="stopgo.php" method="GET">
<input type="button" name="start2" value="weiter">
</form>
<div id="content1" style="<?php echo $display; ?> width:320px; height:240px">Hier ist das erste Kapitel</div>
</body>
</html>
ich bekomm auch nichts in der url übergeben.
mfg falke
Hi falke,
wenn ich die : variation nehme ist das div von vornerein sichtbar und wenn ich die andere Variation nehme passiet per klick darauf leider auch nichts.
<input type="button" name="start2" value="weiter">
Dein Formular wird an dieser Stelle hier gar nicht abgeschickt - du benötigst hier einen _Submit_ Button. Dann sollte es bei der zweiten Variante funktionieren.
Was "klappt" denn bei der ersten Variante nicht? Gibt es irgendwelche Notice- oder Warnmeldungen? Hast du error_reporting() auch auf E_ALL gesetzt?
MfG, Dennis.
hi,
an dem button lag wohl das problem, die ganze Zeit!
mfg falke