---
title: "Öppna ett stänga resten?"
type: "forum-thread"
url: "https://www.webforum.nu/amne/javascript/152445-öppna-ett-stänga-resten"
topic: "JavaScript"
topic_url: "https://www.webforum.nu/amne/javascript"
author: "jonne"
published: "2006-10-12T21:12:50.000Z"
updated: "2006-10-13T14:13:01.000Z"
replies: 14
views: 462
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/javascript/152445-öppna-ett-stänga-resten"
---

# Öppna ett stänga resten?

## #1 — jonne, 2006-10-12T21:12Z

Eftersom jag inser mina begränsningar och vet om att javascript inte är min starka sida så ska jag bespara mitt hår en massa lidande ...
Jag har följande för att kunna visa och dölja ett lager via en och samma länk.
Min fråga är nu går det att modifiera detta så att när jag klickar på en länk för att visa ett lager stänger den alla som är öppna?

```
function showHide(id){
		var e=getElm(id);
	
		if(e){
			if(document.layers){
				e.display=(e.display=='')?'none':'';
			} else {
				e.style.display=(e.style.display=='none'||e.style.display=='')?'block':'none';
			}
		}
	};		

	
	function getElm(s){
		switch(true){
		case typeof(document.all)=="object":
			return document.all[s];
		case typeof(document.getElementById)=="function":
			return document.getElementById(s);
		case typeof(document.layers)=="object":
			return document.layers[s];
		default:
			return 0;
		}
	};
```

Permalänk: https://www.webforum.nu/p/152445

## #2 — nitro2k01, 2006-10-12T21:15Z

Vilket format har id? Alltså finns det något mönster i vilket värde id har, typ bla1, bla2, bla3 osv?

Permalänk: https://www.webforum.nu/p/1882861

## #3 — jonne, 2006-10-12T21:27Z

Det uppbyggt av en tidstämpel samt ett userid
Lite i stil med 

```
<tr>	<td width="40" align="center"><a href="#" onclick="showHide('601')">09:00</a></td>
	<td><div id="601" style="display:none">div contense</div>&nbsp;</td>
</tr>
<tr>	<td width="40" align="center"><a href="#" onclick="showHide('901')">09:30</a></td>
	<td><div id="901" style="display:none">div contense</div>&nbsp;</td>
</tr>
<tr>	<td width="40" align="center"><a href="#" onclick="showHide('1201')">10:00</a></td>
	<td><div id="1201" style="display:none">div contense</div>&nbsp;</td>
</tr>
```

Permalänk: https://www.webforum.nu/p/1882869

## #4 — jonne, 2006-10-12T21:31Z

Om jag gör ett tillägg föresten hjälper det? Alla div element förutom det man klickar på ska sättas till display:none. Kanske med något undantag som man kan namnge?

Permalänk: https://www.webforum.nu/p/1882870

## #5 — nitro2k01, 2006-10-12T22:04Z

Pröva detta: 

```
function showHide(myid){
	var es=document.getElementsByTagName("div");
	
	for (var i=0; i<es.length; i++){
		if(es[i].id == myid)
			es[i].style.display= (es[i].style.display=='none' || /^\s*$/.test(es[i].style.display))?'block':'none';
		else if(/^\d+$/.test(es[i].id))
			es[i].style.display = 'none';
	}
}
```

Som vanligt med min kod är den otestad, men den brukar funka. ;)
Funktionen getElm då? Jo, den kan gott ryka, om du inte använder den nån annanstans.

Permalänk: https://www.webforum.nu/p/1882880

## #6 — jonne, 2006-10-13T06:08Z

Well det där funkade men ändå inte :) Döljer och släcker på samma länk fortfarande som innan men döljer inte dem som redan är öppnade

Permalänk: https://www.webforum.nu/p/1882917

## #7 — Peter S, 2006-10-13T10:51Z

Nitros förslag bör fungera. Testa följande och verifiera att alla div.id är numeriska

```
<tr>	<td width="40" align="center"><a href="#" onclick="showHide('601')">09:00</a></td>
	<td><div id="601" style="display:none">div contense 09:00</div>&nbsp;</td>
</tr>
<tr>	<td width="40" align="center"><a href="#" onclick="showHide('901')">09:30</a></td>
	<td><div id="901" style="display:none">div contense 09:30</div>&nbsp;</td>
</tr>
<tr>	<td width="40" align="center"><a href="#" onclick="showHide('1201')">10:00</a></td>
	<td><div id="1201" style="display:none">div contense 10:00</div>&nbsp;</td>
</tr>

<script>
function showHide(myid){
	var es=document.getElementsByTagName("div");
	
	for (var i=0; i<es.length; i++){
		if(es[i].id == myid)
			es[i].style.display= (es[i].style.display=='none' || /^\s*$/.test(es[i].style.display))?'block':'none';
		else if(/^\d+$/.test(es[i].id))
			es[i].style.display = 'none';
	}
}
</script>
```

Permalänk: https://www.webforum.nu/p/1883028

## #8 — jonne, 2006-10-13T11:12Z

Aha numeriska. Där hade vi det! :) Tackar så mycke!

Permalänk: https://www.webforum.nu/p/1883038

## #9 — Peter S, 2006-10-13T11:16Z

Visserligen får inte id-attribut börja med en siffra, så vill du kunna validera dokumentet får ett annat format hittas på. Så länge formatet följer ett logiskt mönster är ovanstående skript lätt att skriva om för att hantera det.  :)

Permalänk: https://www.webforum.nu/p/1883041

## #10 — jonne, 2006-10-13T13:24Z

Du vet vad nästa fråga blir när du säger sådär va? :e Om jag vill ha till ett litet prefix exv 'ref' ?

Permalänk: https://www.webforum.nu/p/1883077

## #11 — Peter S, 2006-10-13T13:29Z

Då

```
function showHide(myid){
	var es=document.getElementsByTagName("div");
	
	for (var i=0; i<es.length; i++){
		if(es[i].id == myid)
			es[i].style.display= (es[i].style.display=='none' || /^\s*$/.test(es[i].style.display))?'block':'none';
		else if(/^[red][B]ref[/B][/red]\d+$/.test(es[i].id))
			es[i].style.display = 'none';
	}
}
```

Permalänk: https://www.webforum.nu/p/1883080

## #12 — jonne, 2006-10-13T13:57Z

Nja. Verkade inte vilja spela boll.
Testade att lägga till det i raden innan också men gick inte mycke bättre

```
es[i].style.display= (es[i].style.display=='none' || /^ref\s*$/.test(es[i].style.display))?'block':'none';
```

Permalänk: https://www.webforum.nu/p/1883087

## #13 — Peter S, 2006-10-13T14:00Z

Har du ändrat alla div.id och funktionsanrop?

```
<tr>	<td width="40" align="center"><a href="#" onclick="showHide('ref601')">09:00</a></td>
	<td><div id="ref601" style="display:none">div contense 09:00</div>&nbsp;</td>
</tr>
<tr>	<td width="40" align="center"><a href="#" onclick="showHide('ref901')">09:30</a></td>
	<td><div id="ref901" style="display:none">div contense 09:30</div>&nbsp;</td>
</tr>
<tr>	<td width="40" align="center"><a href="#" onclick="showHide('ref1201')">10:00</a></td>
	<td><div id="ref1201" style="display:none">div contense 10:00</div>&nbsp;</td>
</tr>

<script>
function showHide(myid){
	var es=document.getElementsByTagName("div");
	
	for (var i=0; i<es.length; i++){
		if(es[i].id == myid)
			es[i].style.display= (es[i].style.display=='none' || /^\s*$/.test(es[i].style.display))?'block':'none';
		else if(/^ref\d+$/.test(es[i].id))
			es[i].style.display = 'none';
	}
}
</script>
```

 :)

Permalänk: https://www.webforum.nu/p/1883090

## #14 — jonne, 2006-10-13T14:11Z

Ah men puckojonne! Jag ändrade funktionsanropen men inte id:na på divarna! Tur du har tålamod :e
Tusen tack för hjälpen!

Permalänk: https://www.webforum.nu/p/1883095

## #15 — Peter S, 2006-10-13T14:13Z

(y)

Permalänk: https://www.webforum.nu/p/1883096

---

Tråden på webben: https://www.webforum.nu/amne/javascript/152445-öppna-ett-stänga-resten
