Unvollständiges Auffüllen einer js-Funktion über php
Enrico
- php
0 Der-Dennis0 Der-Dennis0 Enrico
0 ChrisB
Hallo,
ich möchte über php, je nach angeklicktem Menüpunkt, seitenspezifische css- und js-Angaben in meine html-Struktur einhängen.
Die relevante html-Struktur sieht folgendermassen aus:
<head>
<title>1. Dartclub Altdorf e.V.</title>
<link rel="stylesheet" href="css/Meldungen.css" type="text/css" media="screen" />
<link rel="stylesheet" href="css/Layout.css" type="text/css" media="screen" />
<link rel="stylesheet" href="css/Menuepunkte.css" type="text/css" media="screen" />
<?php
echo $Formatierungen;
echo $Javascript_head;
?>
<script type="text/javascript">
window.onload=function()
{
<?php
echo $Javascript_onload;
?>
}
</script>
</head>
Die php-Datei, die das Menü aufbaut und die seitenspezifischen css- und js-Angaben festlegt, hat folgenden Aufbau (ich habe hier den Code ebenfalls auf den relevanten Abschnitt reduziert):
$Menuepunkte = array ("Neuigkeiten", "Vereinsheim", "Mitglieder", "Kontakt", "Gaestebuch", "Links", "Rechtliches");
$Aktionen = array ("Lesen", "Eintragen", "Vorschau", "Bestaetigung");
foreach ($Menuepunkte as $Menuepunkt)
{
if ($Menuepunkt == $Seite)
{
$Menue .= '<span id="' . $Menuepunkt . '_active"></span>';
if ($Seite == "Gaestebuch")
{
$Formatierungen = '<link rel="stylesheet" href="css/Gaestebuch_Lesen.css" type="text/css" media="screen" />';
$Javascript_head = '<script src="js/Gaestebuch_Lesen.js" type="text/javascript"></script>';
$Javascript_onload = 'Datenbank_aufbauen (); Cufon.replace ("#Anzeigebereich"); Container_Meldungen.style.display = "none";';
}
}
else
{
$Menue .= '<a id="' . $Menuepunkt . '" href="Layout.php?Seite=' . $Menuepunkt . '"></a>';
$Javascript_onload = 'Cufon.replace ("#Anzeigebereich");';
}
}
Unverständlicherweise ist es jetzt aber so, dass beim ausgewählten Menüpunkt "Gaestebuch" die Angaben nicht vollständig eingebunden werden:
<link rel="stylesheet" href="css/Gaestebuch_Lesen.css" type="text/css" media="screen" />
<script src="js/Gaestebuch_Lesen.js" type="text/javascript"></script>
<script type="text/javascript">
window.onload=function()
{
Cufon.replace ("#Anzeigebereich");
}
</script>
Die zusätzliche stylesheet-Datei wird eingebunden, ebenso die zusätzliche javascript-Datei, aber die zusätzlichen Funktionen für das "onload"-Ereignis werden ignoriert (?).
Das Menü ansich funktioniert einwandfrei.
Kann es daran liegen, dass mit "echo {Funktion}" eher ein Ergebnis ausgegeben wird, als die Funktion selber eingehängt wird?
Woran liegt es, dass die "onload"-Funktion nicht vollständig befüllt wird?
Fehlermeldungen oder Warnungen bekomme ich vom Firebug nicht, d.h. soweit muß formal alles richtig notiert sein.
Vielen Dank für Eure Mithilfe und Gruß
Enrico
Hey Enrico,
foreach ($Menuepunkte as $Menuepunkt)
{
if ($Menuepunkt == $Seite)
{
$Menue .= '<span id="' . $Menuepunkt . '_active"></span>';if ($Seite == "Gaestebuch")
{
$Formatierungen = '<link rel="stylesheet" href="css/Gaestebuch_Lesen.css" type="text/css" media="screen" />';
$Javascript_head = '<script src="js/Gaestebuch_Lesen.js" type="text/javascript"></script>';
$Javascript_onload = 'Datenbank_aufbauen (); Cufon.replace ("#Anzeigebereich"); Container_Meldungen.style.display = "none";';
}
}
else
{
$Menue .= '<a id="' . $Menuepunkt . '" href="Layout.php?Seite=' . $Menuepunkt . '"></a>';
$Javascript_onload = 'Cufon.replace ("#Anzeigebereich");';
}
}Unverständlicherweise ist es jetzt aber so, dass beim ausgewählten Menüpunkt "Gaestebuch" die Angaben nicht vollständig eingebunden werden:
<link rel="stylesheet" href="css/Gaestebuch_Lesen.css" type="text/css" media="screen" />
<script src="js/Gaestebuch_Lesen.js" type="text/javascript"></script>
<script type="text/javascript">
window.onload=function()
{
Cufon.replace ("#Anzeigebereich");
}
</script>
Woran liegt es, dass die "onload"-Funktion nicht vollständig befüllt wird?
ich glaube, Deine äußere if-Abfrage innerhalb der Schleife ist falsch. Wenn ich das richtig verstehe wird der else-Teil außer in einem Durchlauf immer aufgerufen und überschreibt die Variable $Javascript_onload. Schau Dir das am besten nochmal an.
Gruß, Dennis
Noch als Hinweis: Hole $Formatierungen, $Javascript_head und $Javascript_onload, wenn möglich, aus der Schleife raus.
Gruß, Dennis
Hallo Dennis,
indeed, das war die Ursache, ein sehr blöder Logik-Fehler, den ich gemacht habe.
Danke Dir für Deine Hilfe.
Gruß,
Enrico
Hi,
Kann es daran liegen, dass mit "echo {Funktion}" eher ein Ergebnis ausgegeben wird, als die Funktion selber eingehängt wird?
Natürlich nicht - mach dir bitte klar, wo PHP ausgeführt wird, und wo JavaScript.
Fehlermeldungen oder Warnungen bekomme ich vom Firebug nicht, d.h. soweit muß formal alles richtig notiert sein.
Ob der HTML-Code, den der Client erhält, dem entspricht, was du erwartet hast, hättest du als allererstes mal überprüfen sollen.
MfG ChrisB