Till Startsidan

Skaffa webbhotell?
Läs JavaScript.nu's jämförelse av webbhotell.
Med priser från
9 kr / månad.

Genom ett samarbete får alla JavaScript.nu-
besökare dessutom 100 kr i rabatt vid beställning.


Re: Lightbox2 och paging

[ JavaScript.nu's Forum ] [ Viktigt om forumet ] [ JavaScript.nu's Startsida ]


Forum / Lightbox2 och paging
 Jag testade att göra ett globalt objektet som du föreslog, funkade skitbra! Tack som fan för hjälpen :D


 
Det här forumet är också ganska dött.
Problemet är att du inte kommer åt rätt this-objekt, och det kan rättas på en del olika sätt:
1. Om du är säker på att du bara har lightbox-koden inkluderad en gång kan du använda fulhacket att göra 'this' global:

window.lightboxObj = this;
var pageNumbers = "";
for (var i = 1; i < this.imageArray.length + 1; i++) {
if (this.activeImage + 1 == i) {
pageNumbers += "<a onclick='lightboxObj.changeImage(" + i + ");' id='pager_" + i + "' href='#'><strong><u>" + i + "</u></strong></a> ";
} else {
pageNumbers += "<a onclick='lightboxObj.changeImage(" + i + ");' id='pager_" + i + "' href='#'>" + i + "</a> ";
}
}
this.pager.update(pageNumbers).show();

2. Du har id'n på länkarna, så du kan lägga till onclick-functionen dynamiskt vilket tillåter dig att bevara 'this':

var pageNumbers = "";
for (var i = 1; i < this.imageArray.length + 1; i++) {
if (this.activeImage + 1 == i) {
pageNumbers += "<a id='pager_" + i + "' href='#'><strong><u>" + i + "</u></strong></a> ";
} else {
pageNumbers += "<a id='pager_" + i + "' href='#'>" + i + "</a> ";
}
}
this.pager.update(pageNumbers).show();

var self = this;
for (var i = 1; i <= this.imageArray.length; i++) {
document.getElementById('pager_' + i).onclick = (function(i) { return function() { self.changeImage(i); }; })(i);
}

Notera att för att undvika att alla använder samma 'i' så wrappar jag i varje iteration 'i' i ett closure.

3. Du kan bygga DOM-strukturen dynamiskt (document.createElement et al), med onclick-kod som liknar den i 2. Jag vet inte hur väl detta integrerar med lightbox.

Är du förresten säker på att changeImage verkligen tar index i [1, len] och inte [0, len) ?

 
Då Lightbox-forumet verkar stendött ställer jag min fråga även här:

Jag försöker göra en egen paging-funktion i min lightbox, så att det står t.ex: "1 2 3 4 5 6 7 8" och att den aktuella bilden är markerad. Klickar man på ett nummer ska rätt bild visas.

jag har kommit så långt att rätt antal siffror visas, och rätt siffra är markerad, men sen körde jag fast totalt när jag vill anropa changeImage-funktionen.

changeImage ligger inne i en klass, och eftersom jag anropar funktionen i a-taggens onclick, så får jag lixom inte tag i funktionen.

Känner du till lightbox så väl att du kan hjälpa mig, eller har du något förslag på vad jag kan testa?

Lite kod som ligger inne i klassen:
// if image is part of set display 'Image x of x'
if (this.imageArray.length > 1) {
this.numberDisplay.update(LightboxOptions.labelImage + ' ' + (this.activeImage + 1) + ' ' + LightboxOptions.labelOf + ' ' + this.imageArray.length).show();
// Här börjar min customize kod:
// to show pager navigation
var pageNumbers = "";
for (var i = 1; i < this.imageArray.length + 1; i++) {
if (this.activeImage + 1 == i) {
pageNumbers += "<a onclick='this.changeImage(" + i + ");' id='pager_" + i + "' href='#'><strong><u>" + i + "</u></strong></a> ";
} else {
pageNumbers += "<a onclick='this.changeImage(" + i + ");' id='pager_" + i + "' href='#'>" + i + "</a> ";
}
}
this.pager.update(pageNumbers).show();

}


Postat av Eva (213.115.17.212) den 22 Mars, 2011 kl 16:34:03.
Som svar på: Re: Lightbox2 och paging postat av Simon den 08 Mars, 2011 kl 08:18:41.


Svar på inlägget:


Posta ett svar:

Namn:
E-Mail:
Rubrik:
Meddelande:
Ja tack, maila mig om andra svarar på detta inlägg.
Ja tack, maila mig om andra svarar på mitt inlägg.


[ JavaScript.nu's Forum ] [ Viktigt om forumet ] [ JavaScript.nu's Startsida ]






Copyright © Omid Rouhani 1997-2010; Alla rättigheter reserverade.
Guider: [ HTML guide ] - [ JavaScript guide ] - [ DHTML guide ] - [ Perl guide ] - [ Sitemap ]