Har ett script:<code><script type="text/javascript"> Hmm. Intressant. Borde det inte funka med nåt i stil med: du kan ju alltid iterera igenom alla som inte är lika med vald id och sätta dem till block innan du sätter vald id till none... Löste det på detta sätt:<code><script type="text/javascript">Visa/dölj
function displayLayer(which) {
obj = document.getElementById(which);
obj.style.display == "block" ? obj.style.display = "none" : obj.style.display = "block";
}
</script></code>och länkar som visar olika bilder:<code>Bild1<br>
<div id="p1" style="display:none;"><img src="bild1.gif" width="100" height="10"></div>
Bild2<br>
<div id="p2" style="display:none;"><img src="bild2.gif" width="100" height="10"></div>
Bild2<br>
<div id="p3" style="display:none;"><img src="bild3.gif" width="100" height="10"></div></code>
När man klickar på en länk visas motsvarande bild. Allt väl. Men nu vill jag att om man har valt att visa en bild och klickar på en annan så ska den redan "öppnade" bilden döljas. Kan man på något sätt ändra scriptet så att först döljs alla synliga div:ar sen visas vald.Sv: Visa/dölj
Min tanke är: kan man inte kolla visningsstatus för "divarna", eller kanske hålla ordning på dem själv.
I din funktion (displayLayer) läser du status för alla divar och om det inte är den valda så döljer du den om det är den valda så visar du den (eller snarare sätter staus till visible) och uppdaterar eventuellt ditt eget system för visningsstatus.
Torrkod:
För varje div
Om synlig och inte den valda - > Dölj och uppdatera status
Om synlig/osynlig och den valda - > Visa och uppdatera status
//Mikael Sand
Kan inte JavaScript så bra att jag kan knäcka det i huvudetSv: Visa/dölj
<script ... >
var last;
function displayLayer(which) {
obj = document.getElementById(which);
if (obj!=last) //Vet inte om det här går, annars kan du ta bort det, antar jag...
{
//dölj gamla
last.style.display = "none";
//visa nya
obj.style.display == "block";
//spara den nya (som blir den gamla sen)
last = obj;
}
}
</script>Sv: Visa/dölj
Du vet att de alla heter pN
iterera pN [1..N]
om vald != pN
visa ej
annars
visa
klart...Sv: Visa/dölj
var lobj = 0;
function displayLayer(id) {
var obj = document.getElementById(id);
if (!lobj) {
obj.style.display = "block";
lobj = obj
} else {
if (obj.getAttribute("id") == lobj.getAttribute("id")) {
obj.style.display = "none";
lobj = 0;
} else {
lobj.style.display = "none";
obj.style.display = "block";
lobj = obj
}
}
}
</script></code>