Prototype - Element holen aus Ajax.Updater

susi22

Erfahrenes Mitglied
Prototype - Auf Element zugreifen aus Ajax.Updater

Hallo liebe Forengemeinde,
ich weis nicht, ob mein Titel richtig definiert ist. Leider bin ich, was Ajax angeht nicht so "talentiert" ;P

Ich habe ein Div mit der ID "Inhalt", in dieses möchte ich dynamisch Content nachladen.

Das mache ich mit
Code:
new Ajax.Updater("Inhalt", "daten.php");

Die Ausgabe der daten.php lautet:
HTML:
<div class="pinnwand">Beispieltext</div>
<div class="pinnwand">Beispieltext</div>
<div class="pinnwand">Beispieltext</div>
<div class="pinnwand">Beispieltext</div>
<div class="pinnwand">Beispieltext</div>
<a name="ende" id="ende"></a>

Bis hierhin funktioniert auch alles ganz gut, allerdings würde ich das Div gerne beim auf des "Ajax.Updater" auf den Anker "ende" scrollen lassen lassen z.B. mit
Code:
Scrollto()

Das ganze aus dem Grund, weil das Div eine feste Höhe hat, welche mit "overflow:auto" automatisch eine Scrollbar bekommt wenn diese höhe Überschritten ist. Den neusten Eintrag soll man aber dennoch ohne selber zu scrollen lesen können, wie z.B. in einem Chat.

Deswegen war meine Überlegung, nach aufruf des "Ajax.Updater" ein "Scrollto" auf den Anker in die Ausgabe zu setzen.

Jetzt hackt es ein wenig ;) ! Wie kann ich auf das "Anker Element" zugreifen?
Code:
var test = getelementbyid("ende")
funktioniert nicht, da kein Wert gefunden wird. "test is null" sagt Firebug da.

Ich hoffe, ich habe meine Frage verständlich ausgedrückt und bedanke mich für Euer Interesse ;)

Ganz liebe Grüße,
Susi
 
Zuletzt bearbeitet:
Ich gehe mal davon aus, dass du anstatt "getelementbyid" "document.getElementById" benutzt hast und das nur beispielhaft sein soll.

Wo steht denn dieser Aufruf? Ich denke mal der richtige Ort wäre im "onComplete"-Callback des Ajax.Updater. Denn erst dann ist ja das Element vorhanden.
 
Ich gehe mal davon aus, dass du anstatt "getelementbyid" "document.getElementById" benutzt hast und das nur beispielhaft sein soll.

Ja genau.

Also meinst Du der Ajax.Updater soll so lauten?


Code:
new Ajax.Updater("Inhalt", "daten.php", {
onComplete: function() {
var ende = document.getElementById("ende");
ende.ScrollTo();
},
});


Beste Grüße,
Susi
 
Ja so in etwa. Ich hab noch nie Prototype benutzt, deshalb kann ich dir leider nicht sagen, wie es exakt lauten muss.
Funktioniert es so denn nicht?

Edit: das scrollTo benutzt du noch falsch.

Code:
new Ajax.Updater("Inhalt", "daten.php", {
onComplete: function() {
var ende = document.getElementById("ende");
$(ende).scrollTo();
},
});
 
Jetzt geht es! Ich habe es nun folgendermaßen eingebaut:

Code:
new Ajax.Updater("Inhalt", "daten.php", {
onComplete: function() {
var inhaltdiv = document.getElementById('Inhalt');
inhaltdiv.scrollTop = chatdiv.scrollHeight;
},
});

Vielen Dank und noch einen schönen Abend!!
 

Neue Beiträge

Zurück