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(); } |
|