vise / skjule lag II
Her er et script der kan vise eller skjule lag. Det fungerer selv med flere forskellige serier af lag (hvor hver serie har forskellig absolut position), med det første lag i hver serie sat til visible ved load af siden og alle lag i serien med stigende z-index. Der er også taget højde for at funktionen kaldes både fra index siden og fra dennes iframe. Men scriptet forudsætter at alle lagenes ID indgår som argumenter i kaldet af funktionen sammen med enten 'show' eller 'hide' (for hhv visible og hidden). Hvis man har 50 lag i en serie giver det nogle ret besværlige kald. Kan nogle her finde på et script der udretter det samme, men kan nøjes med bare ID for det lag der skal vises som argument (eller kun ganske få flere argumenter i hvert kald)???? Her er scriptet som det er nu:<script type="text/javascript">
function findObj(theObj, theDoc) {
var p, i, foundObj;
if(!theDoc) theDoc = document;
if(!foundObj && document.getElementById && self!=parent) foundObj = parent.document.getElementById(theObj); // Hvis DOM browser med frames (iframe her)
if(!foundObj && document.getElementById && self==parent) foundObj = document.getElementById(theObj); // Hvis DOM browser uden frames
return foundObj;
}
function showHideLayers() {
var i, visStr, obj, args = showHideLayers.arguments; // args er argumenterne i funktionskaldet
for (i=0; i<(args.length-1); i+=2) { // Tælleren tæller op til 1 før det sidste argument, dvs. op til det sidste objID og tester undervejs argument 1 fra objID'et i hvert par (dvs. enten om der står 'show' eller 'hide').
if ((obj = findObj(args[i])) != null) { // Forudsat at findObj() ikke returnerer null på argumenterne i kaldet af showHideLayers()
visStr = args[i+1]; // - og at visStr er det 2. argument i hvert par (dvs. 'show' eller 'hide')
if (obj.style) { // - og hvis style objektet er understøttet
obj = obj.style;
if(visStr == 'show') visStr = 'visible'; // - så skal 'show' sættes = 'visible'
else if(visStr == 'hide') visStr = 'hidden'; // og 'hide' = 'hidden'
}
obj.visibility = visStr; // Og det hele sammensættes til sidst til (evt. parent.)document.getElementById(objID).style.visibility = visible/hidden
}
}
}
</script>
Kaldet foregår så f.eks.:
<a href="page.html#afsnit1" onclick="showHideLayers('sekRef01','show','sekRef00','hide','sekRef02','hide','sekRef03','hide');">Gå til afsn.1</a>
<a href="page.html#afsnit2" onclick="showHideLayers('sekRef02','show','sekRef00','hide','sekRef01','hide','sekRef03','hide');">Gå til afsn.2</a>
<a href="page.html#afsnit3" onclick="showHideLayers('sekRef03','show','sekRef00','hide','sekRef01','hide','sekRef02','hide');">Gå til afsn.3</a>
-men med 50 afsnit bliver det lisom lidt besværligt
/mik
