---
title: "Öppna/stänga frame"
type: "forum-thread"
url: "https://www.webforum.nu/amne/javascript/118412-öppna-stänga-frame"
topic: "JavaScript"
topic_url: "https://www.webforum.nu/amne/javascript"
author: "Web-Tor"
published: "2004-12-20T09:13:07.000Z"
updated: "2004-12-20T12:33:34.000Z"
replies: 13
views: 373
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/118412-öppna-stänga-frame"
---

# Öppna/stänga frame

## #1 — Web-Tor, 2004-12-20T09:13Z

Jag har en sida men en hjälp-frame till höger. Framen gåt att öppna och stänga.
Från main-framen kan jag ändra vilken sida som ska visas i hjälpen.

Har man öppnat hjälpen, och sedan byter hjälpsida, kollar jag om hjälp-framen är öppen för att kunna behålla den öppen.

[Kolla på det här exemplet](http://member.webforum.nu/1123/frames.html)
\- Klicka på "Open" i hjälp-framen.
\- Klicka på "Byt hjälpsida" i main-framen.
\- Den nya hjälpsidan laddas in.
**\- Även om hjälpen förblir öppen så ändras länken "Close" till "Open". Varför?**

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

## #2 — yohpops, 2004-12-20T09:22Z

Eftersom när sidan laddas döljs Close automatiskt.

```
<a href="#" id="help_open" onclick="frame_opencol();">Open</a><br>
<a href="#" id="help_close" onclick="frame_closecol();" [b]style="display:none"[/b]>Close</a>
```

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

## #3 — Web-Tor, 2004-12-20T09:29Z

Men i funktionen *frame_opencol()* kör jag ju:

```
helpWin.document.getElementById('help_close').style.display='block';
```

Dessutom så kommer "Open"-länken fram trots att jag kör funktionen *frame_opencol()*. Den funktionen körs ju av någon anledning **innan** den nya sidan laddats in, trots att koden kommer efter?

[Länk till .js-filen](http://member.webforum.nu/1123/script.js)

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

## #4 — yohpops, 2004-12-20T09:41Z

Open visas alltid när du laddar om sidan.
frame_opencol() körs inte förens du klickar på Open.

Du får spara en variabel i main-framen som håller reda på om help-framen är öppen eller stängd, och när hjälp-sidan laddas kollar du om den ska vara öppen eller stängd.

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

## #5 — Web-Tor, 2004-12-20T09:56Z

> frame_opencol() körs inte förens du klickar på Open.

Den **ska** körs även när jag klickar på "Byt hjälpsida".
Kolla på funktionen *help()*.

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

## #6 — yohpops, 2004-12-20T10:17Z

Lägg variablen state, globalt och kolla den från hjälpsidan när den laddas istället för i main.

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

## #7 — Web-Tor, 2004-12-20T11:32Z

Fattar noll.
Hur ska jag kunna kolla om föregående hjälpsida var öppen eller stängd?

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

## #8 — Peter S, 2004-12-20T11:42Z

1\. Ta bort *var* framför *state*
2\. 

```
if (state == "open"){
    helpWin.document.getElementById('help_open').style.display='none';	
    helpWin.document.getElementById('help_close').style.display='block';
}
```

 :)

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

## #9 — Web-Tor, 2004-12-20T11:48Z

Var ska jag lägga koden i punkt 2?

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

## #10 — Peter S, 2004-12-20T12:02Z

Där den befintliga if-satsen är. Men jag är inte säker på att det fungerar ändå. Sannolikheten är nog stor för att du får använda onload-hanteraren i help2.html.

 :)

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

## #11 — Web-Tor, 2004-12-20T12:08Z

Har ändrat koden nu men det fungerar precis lika dåligt som tidigare... :l

> Sannolikheten är nog stor för att du får använda onload-hanteraren i help2.html.

Hur? :q Som jag skrev tidigare:

> Hur ska jag kunna kolla om föregående hjälpsida var öppen eller stängd?

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

## #12 — Peter S, 2004-12-20T12:17Z

Vi gör så här istället  ;) 

I frames.html:

```
<head><script type="text/javascript">var state="";</script></head>
```

help2.html:

```
<html>
<head>
	<script type="text/javascript" src="script.js"></script>
<head>
</body>
	<h1>help 2</h1>
	<a href="#" id="help_open" onclick="frame_opencol();">Open</a><br>
	<a href="#" id="help_close" onclick="frame_closecol();" style="display:none">Close</a>
	<script type="text/javascript">
	if (top["state"] == "open"){
		document.getElementById('help_open').style.display='none';
		document.getElementById('help_close').style.display='block';
	}
	</script>
</body>

</html>
```

script.js:

```
function help(url){
	if (helpWin.document.getElementById('help_close').style.display=="block"){
		top["state"]="open";
	}else{
		top["state"]="closed";
	}

	helpWin.location.replace(url);
}
```

 :)

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

## #13 — Web-Tor, 2004-12-20T12:31Z

Åh! Gamla kära top-variabler. :e

För att slippa lägga in js-kod i HTML-filerna så lade jag till det här i .js-filen:

```
if(typeof(window.top.state)=="undefined")
	window.top.state="";

....

function h(){
	if (window.top.state=="open"){
		document.getElementById('help_open').style.display='none';
		document.getElementById('help_close').style.display='block';
	}
}
```

Funktionen *h()* anropas sedan i onload från hjälp-sidorna. :)

[Se så bra det funkar](http://member.webforum.nu/1123/frames.html).
Tack Peter!

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

## #14 — Peter S, 2004-12-20T12:33Z

:bire

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

---

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