Zitat: " wieso geht denn die eine gallerie nur einmal pro seite?"
Der Grund ist, dass dieser Code globale Variablen verwendet und sich pauschal auf alle img-Tags bezieht, ein häufiges Problem bei älteren Skripts:
var images = document.getElementById("divId");
document.getElementsByTagName("img");
Eine schlechte Lösung wäre, die Variablen zu vervielfachen und ihnen und den IDs eindeutige Namen zu geben:
// 1st gallery
var images1 = document.getElementById("divId1");
// 2nd gallery
var images2 = document.getElementById("divId2");
Um die zugehörigen Bilder zu ermitteln, müsste man dann die Kind-Elemente der Container ermitteln. Wie gesagt, eine sehr schlechte Lösung.
Eine bessere Lösung besteht darin, alle Variablen in einer Funktion zu kapseln und alle HTML-Elemente in einem Container unterzubringen und dessen Selektor an die Funktion zu übergeben:
function mygallery(sel) {
var bigimg = <img class="bigimg">;
$(sel + " img").on("click", function() {
$(sel + ".bigimg").attr("src", $(this).attr("src"));
});
$(sel).prepend(bigimg);
}
Dann für die verschiedenen Galerien diese Funktion mit dem betr. Selektor aufrufen:
mygallery("#gallery1");
mygallery("#gallery2");
Ungetestet, ich wollte nur mal die ungefähre Vorgehensweise skizzieren.
BTW: Es gibt viele gute, fertige Galerie-Skripts, so dass es sich nicht lohnt, so etwas selber zu schreiben, es sei denn, man nimmt es als Übungsaufgabe, um Javascript/jQuery zu lernen. Z. B. dieses:
http://galleria.io/