JavaScript Dia-Show
Justin
- javascript
hi,
Ich hab mir eine DIa-Show mit JavaScript gemacht,
funktiniert auch, allerdings möchte ich noch einiges verbessern.
XHTML (es geht nur die 3D Galerie)
JS
CSS
1. Ich will mit show() nicht die maximale Anzahl an Bildern
mitgeben, weil ich sonst bei einem neuen Bild das dazukommt
in jedem onclick event die max Zahl anpassen muss
(ist zwar bei 2 Bildern noch nicht schlimm, aber es werden
sicher noch mehr)
Kann ich die Bilder in den "preview" Elementen nicht zählen?
2. Für die section nehm ich immer den Hmtl Namen ohne das
.html (zB 3d_model.html -> section = 3d_model) und diese sction
übergeb ich ja auch im show(), aber kann ich nicht den aktuellen
dateinamen der seite bekommen und irgendwie das .html abtrennen?
3. Kann ich zählen in dem wievielten <li> das geklickte Bild
steckt, dann könnte ich nämlich auch das automatisieren?
4. Dann würde ich noch gerne die onclick-evente autom. zuweisen
Also wie ihr seht will ich das ganze einfach so machen dass
ich beim aktualisieren weniger zu ändern hab.
hi,
Kann ich die Bilder in den "preview" Elementen nicht zählen?
Wenn du in der Liste in jedem LI so ein Bild hast, bräuchtest du ja nur die LI zu zählen:
document.getElementById("preview").getElementsByTagName("li").length
- Für die section nehm ich immer den Hmtl Namen ohne das
.html (zB 3d_model.html -> section = 3d_model) und diese sction
übergeb ich ja auch im show(), aber kann ich nicht den aktuellen
dateinamen der seite bekommen und irgendwie das .html abtrennen?
location.href oder document.URL nehmen, und mit Stringfunktionen wie gewünscht manipulieren.
- Kann ich zählen in dem wievielten <li> das geklickte Bild
steckt, dann könnte ich nämlich auch das automatisieren?
Brauchst du denn überhaupt diese "Zahl"? Reicht nicht die Referenz auf das jeweilige LI o.ä.?
- Dann würde ich noch gerne die onclick-evente autom. zuweisen
Elemente durchlaufen, und Eventhandler in der Form
{Element}.onclick = Funktionsname;
zuweisen.
gruß,
wahsaga
Wenn du in der Liste in jedem LI so ein Bild hast, bräuchtest du ja nur die LI zu zählen:
document.getElementById("preview").getElementsByTagName("li").length
ja, das funktioniert, danke.
location.href oder document.URL nehmen, und mit Stringfunktionen wie gewünscht manipulieren.
Mit was für string funktionen kann ich denn das .html am ende wegbekommen, dazu hab ich nix gefunden.
Brauchst du denn überhaupt diese "Zahl"? Reicht nicht die Referenz auf das jeweilige LI o.ä.?
Ich hab das so aufgebaut, dass die Bilder bei 1.jpg anfangen und dann 2.jpg ...
Dann kann ich mit previous und next button einfach die zahl um eins verringern oder erhöhen
um das nexte Bild zu sehen, deshalb sollte ich die Zahl schon haben oder?
Elemente durchlaufen, und Eventhandler in der Form
{Element}.onclick = Funktionsname;
zuweisen.
Dazu hab ich jetzt eine Funktion die ich später im Dokument unten drinne aufrufen werde
(ich muss sie doch nach dem "preview" element setzen, oder? sonst sind ja noch keine Bilder da
fürs zuweisen, oder net? bzw. wo würdest du es setzen?)
function addEvent() {
for (var i = 0, i < document.getElementById('preview').getElementsByTagName('li').length), i++) {
}
}
Aber ich weis nicht wie ich auf die Bilder in den <li>s jetzt zugreifen kann. Wie?
Und außerdem geht solange diese Funktion in der .js Datei steht die Gallerie nicht, wieso?
Hallo Justin.
Mit was für string funktionen kann ich denn das .html am ende wegbekommen, dazu hab ich nix gefunden.
Wonach hast du denn gesucht?
Eine Möglichkeit wäre, den Rückgabewert von http://de.selfhtml.org/javascript/objekte/string.htm#last_index_of@title=lastIndexOf für http://de.selfhtml.org/javascript/objekte/string.htm#substring@title=substring zu verwenden.
Einen schönen Dienstag noch.
Gruß, Ashura
Ich hab versucht die section mit folgendem zu bekommen
section = document.URL.substring(0, docuemnt.URL.lastIndexOf(".html"));
Die Daetei heist 3d_models.html
und sollte in section als 3d_models dann stehen.
Aber der macht mir undefined anstatt 3d_models, wieso?
Un wie komm ich jetzt durch die Bilder in dem preview Eleement?
Habe sowas versucht wie
function addEvent() {
for (var i = 0; i < document.getElementById("preview").getElementsByTagName("li").length; i++) {
document.getElementById('preview').images(i).onmouseover = show();
}
}
ging aber nicht
hi,
Ich hab versucht die section mit folgendem zu bekommen
section = document.URL.substring(0, docuemnt.URL.lastIndexOf(".html"));
Die Daetei heist 3d_models.html
und sollte in section als 3d_models dann stehen.
Aber der macht mir undefined anstatt 3d_models, wieso?
Ist der Schreibfehler bei docuemnt auch in deinem echten Testcode vorhanden?
Habe sowas versucht wie
...images(i).onmouseover = show();
Wie ich schon schrieb, die Funktions_referenz_ wird zugewiesen - also nur der Name, ohne (). Denn mit show() rufst du die Funktion gleich an dieser Stelle auf, und weist dem .onmouseover ihren Rückgabewert zu - aber das ist ja nicht das, was du willst.
gruß,
wahsaga
Ist der Schreibfehler bei docuemnt auch in deinem echten Testcode vorhanden?
ja, das wars :)
Wie ich schon schrieb, die Funktions_referenz_ wird zugewiesen - also nur der Name, ohne (). Denn mit show() rufst du die Funktion gleich an dieser Stelle auf, und weist dem .onmouseover ihren Rückgabewert zu - aber das ist ja nicht das, was du willst.
Ich hab mal folgendes versucht
max = document.getElementById("preview").getElementsByTagName("li").length;
for (var i = 0; i < max; i++) {
document.images[i].onmouseover = "document.write('hallo')";
}
zum testen ob ich überhaupt was zugewiesen bekomme, aber das geht auch nicht,
passiert nix wenn ich mit der maus drüber fahr.
Und was ist die Funktions Referenz?
Es wird doch die Funktion nicht direkt aufgerufen wenn ich "show()" mache,
oder? weil das nimmt JS doch als string und nicht als Befehl.
Also komischerweise funtkiniert die Dia-Show im Opera,
aber nicht im Firefox (der weist die onclicks nicht zu).
Wieso?
Es ist aber noch das Problem mit der maximalen Bilderanzahl,
die ich in der funtkion addEvent() einen wert zuweise,
allerdings ohne var, denn das steht ganz am Anfang vom Script,
also müsste diese Variable doch global sein, oder?
Das erste Bilder das man klickt zeigt es ja mit dem richtigen
wert von max an, aber wenn man dann auf next klickt hat max den wert undefined.
Habe die Dateien auf dem Server nochmal aktualisiert, hoffe
mir kann jemand helfen.
BTW: Mein Firefox zeigt auch die Seite DeviantArt.com und noch eine
andere nicht mehr richtig an, ist mein FF futsch? Wenn ja, muss
ich den erst deinstallieren oder kann ich drüberinstallieren?