Anzeige eines dyn. erzeugten Div-Bereiches
Frankyboy
- javascript
Guten Morgäääääähn,
Nach einer langen und leider erfolglosen Nacht möchte ich Euch wiedermal um Eure Hilfe bitten.
Es geht darum, Einträge meines Gästebuches zu kommentieren (Adminmodus).
Ich habe mir das so vorgestellt, dass nach Anklicken des Buttons "Eintrag kommentieren" ein Div-Bereich die aktuell angezeigten Einträge überlagert und darin in einem Textbereich der ursprüngliche Beitrag und im anderen Textbereich der Kommentar eingegeben werden kann.
Der Div-Bereich muss dynamisch erzeugt werden, da ich ja variable Inhalte übergeben muss.
Der Link zum Aufrufen der Kommentar-Funktion sieht so aus:
<a href="EintragKommentieren ('' . $Kommentar . '')">
Dieser Link wird über PHP mit dem Echo-Befehl erzeugt, deshalb die Maskierungen.
Das vorausgehende Auslesen der Einträge, deren Aufbereitung und Ausgabe klappt einwandfrei.
Hier der Code der ausgelagerten JS-Datei:
var AdminFormularAnfang = "<div class='FensterAdministration'>
<table ...>
<tr>
...";
var AdminFormularEnde = "...
</tr>
</table>
</div>";
function EintragKommentieren (Eintrag)
{
var Inhalt = "...
<textarea ... value='" + Eintrag + "'></textarea>
...
<textarea ...></textarea>
...
...";
FensterAdministrationAnzeigen (Inhalt);
}
function FensterAdministrationAnzeigen (Inhalt)
{
document.write (AdminFormularAnfang + Inhalt + AdminFormularEnde);
}
Der Div-Bereich ist so definiert:
.FensterAdministration
{
position: absolute;
left: 0px;
top: 0px;
width: 100%;
height: 100%;
z-index: 100;
}
Wenn ich nun den oben genannten Link anklicke, dann wird mir aber nur folgende Fehlermeldung ausgegeben:
Forbidden
You don't have permission to access ... on this server.
Additionally, a 404 Not Found error was encountered while
trying to use an ErrorDocument to handle the request.
---------------------------------------------------------
Apache/2.0.39 Server at localhost Port 80
In der Fehlermeldung wird der jeweilige Eintrag anstelle der 3 Punkte angezeigt. Ich habe ihn hier nur weggelassen.
Ich hoffe, Ihr könnt mir weiterhelfen.
Gruss, Frankyboy
Guten Morgen,
<a href="EintragKommentieren ('' . $Kommentar . '')">
<a href="#" onClick="EintragKommentieren ('' . $Kommentar . ''")
Gruß aus Berlin!
eddi
Hallo,
Es geht darum, Einträge meines Gästebuches zu kommentieren (Adminmodus).
Ich habe mir das so vorgestellt, dass nach Anklicken des Buttons "Eintrag kommentieren" ein Div-Bereich die aktuell angezeigten Einträge überlagert und darin in einem Textbereich der ursprüngliche Beitrag und im anderen Textbereich der Kommentar eingegeben werden kann.
Der Div-Bereich muss dynamisch erzeugt werden, da ich ja variable Inhalte übergeben muss.
Wieso, das einzig Variable ist wohl die Kommentarnummer. Und die kannst du einfacher dynamisch in ein verstecktes Feld (<input type="hidden">) eines statischen Formulars schreiben (http://de.selfhtml.org/javascript/objekte/forms.htm), welches alle Kommentare nutzen.
Der Link zum Aufrufen der Kommentar-Funktion sieht so aus:
<a href="EintragKommentieren ('' . $Kommentar . '')">
Dieser Link wird über PHP mit dem Echo-Befehl erzeugt, deshalb die Maskierungen.
Das vorausgehende Auslesen der Einträge, deren Aufbereitung und Ausgabe klappt einwandfrei.
Das ist für den Browser zunächst einmal ein simpler Hyperlink, daher wird eine Ressource namens »EintragKommentieren (...)« angefordert, wenn er angeklickt wird. Daher kommt dein Serverfehler. Du suchtest wahrscheinlich <a href="javascript:EintragKommentieren(...)"> oder die besagte onclik-Variante, da ja die JavaScript-Funktion ausgeführt werden soll.
Hier der Code der ausgelagerten JS-Datei:
Wieso lagerst du HTML-Code in eine JavaScript-Datei aus? Viel einfacher könntest du in einem zunächst unsichtbaren Element das Formular unterbringen. Beim Klick auf einen Kommentieren-Link würde es sichtbar (.style.visibility = 'visible', http://de.selfhtml.org/javascript/objekte/style.htm) und die Kommentarnummer würde in einem versteckten Eingabefeld gespeichert werden.
function FensterAdministrationAnzeigen (Inhalt)
{
document.write (AdminFormularAnfang + Inhalt + AdminFormularEnde);
Das geht so nicht, weil document.write nach dem Laden der Seite das Fenster neu beschreiben würde, also alles bisherige löschen würde. Du könntest den HTML-Code höchstens mit innerHTML in ein leeres, vorhandenes Element schreiben (das du z.B. über die id mit document.getElementById('id') ansprichst).
Mathias