---
title: "setTimeout och fnuttar"
type: "forum-thread"
url: "https://www.webforum.nu/amne/javascript/134593-settimeout-och-fnuttar"
topic: "JavaScript"
topic_url: "https://www.webforum.nu/amne/javascript"
author: "Web-Tor"
published: "2005-09-21T14:42:08.000Z"
updated: "2005-09-22T06:13:49.000Z"
replies: 10
views: 401
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/134593-settimeout-och-fnuttar"
---

# setTimeout och fnuttar

## #1 — Web-Tor, 2005-09-21T14:42Z

Jag gissar att jag har fnuttarna på fel sätt eftersom det här inte funkar ('obj' is undefined):

```
<html>
	<head>
		<script type="text/javascript">
			function hide(obj){
				//obj.style.display='none'
				window.setTimeout("obj.style.display='none'",500);
			}
		</script>
	</head>
	<body>
		<form>
			<input type="button" value="Hide text" onclick="hide(bar)">
			<div id="bar">Text</div>
		</form>
	</body>
</html>
```

Så frågan är; hur sjutton ska man skriva i setTimeout?

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

## #2 — nitro2k01, 2005-09-21T14:59Z

```
<html>
<head>
<script type="text/javascript">
function hide (obj){
	var obj = obj;

	this.hide = function(){
		obj.style.display='none';
	}

	window.setTimeout(this.hide,500);
}
</script>
</head>
<body>
<form>
<input type="button" value="Hide text" onclick="hide(bar)">
<div id="bar">Text</div>
</form>
</body>
</html>
```

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

## #3 — Web-Tor, 2005-09-21T16:34Z

Okey, det finns inte något sätt att få till det utan en extra funktion?

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

## #4 — Peter S, 2005-09-21T16:36Z

```
var tmp;
function hide(obj){
    tmp = obj;
    window.setTimeout("tmp.style.display='none'",500);
}
```

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

## #5 — nitro2k01, 2005-09-21T16:41Z

> **Peter S skrev:**
>
> ```
> var tmp;
> function hide(obj){
>     tmp = obj;
>     window.setTimeout("tmp.style.display='none'",500);
> }
> ```

Jag skulle dock avråda från att använda globala variabler, eftersom om denna funktion körs två gånger med olika div'ar, så kommer den första referensen skrivas över.

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

## #6 — nitro2k01, 2005-09-21T16:42Z

> **Web-Tor skrev:**
>
> Okey, det finns inte något sätt att få till det utan en extra funktion?

Vad har du mot detta? Funktionen fungerar ju på samma sätt utifrån.

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

## #7 — Peter S, 2005-09-21T16:50Z

> **nitro2k01 skrev:**
>
> Jag skulle dock avråda från att använda globala variabler, eftersom om denna funktion körs två gånger med olika div'ar, så kommer den första referensen skrivas över.

Eftersom Tors exempel endast innefattade ett element, utgick jag från att det endast gällde den \<div\>en.

En annan variant:

```
function hide(obj){
    window.setTimeout(function(){obj.style.display='none'}, 500);
}
```

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

## #8 — nitro2k01, 2005-09-21T16:52Z

> **Peter S skrev:**
>
> Eftersom Tors exempel endast innefattade ett element, utgick jag från att det endast gällde den \<div\>en.
> 
> En annan variant:
>
> ```
> function hide(obj){
>     window.setTimeout(function(){obj.style.display='none'}, 500);
> }
> ```

Om det verkligen bara gällde ett element, varför inte förenkla ytterligare?

```
function hide(){
    window.setTimeout("bar.style.display='none'",500);
}
```

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

## #9 — nitro2k01, 2005-09-21T16:55Z

Om det nu gäller en div, så funkar detta: (Förutsatt att div'en har id)

```
<html>
<head>
<script type="text/javascript">
function hide(objId){
window.setTimeout("document.getElementById(\"" + objId + "\").style.display='none'",500);
}
</script>
</head>
<body>
<form>
<input type="button" value="Hide text" onclick="hide('bar');">
<div id="bar">Text</div>
</form>
</body>
</html>
```

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

## #10 — Peter S, 2005-09-21T17:06Z

> **nitro2k01 skrev:**
>
> Om det verkligen bara gällde ett element, varför inte förenkla ytterligare?
>
> ```
> function hide(){
>     window.setTimeout("bar.style.display='none'",500);
> }
> ```

Det är helt klart att föredra  :)

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

## #11 — Web-Tor, 2005-09-22T06:13Z

Det kan vara olika element. Det är elementet som skickas in till funktionen som ska påverkas.

Tack för alla svar! :)

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

---

Tråden på webben: https://www.webforum.nu/amne/javascript/134593-settimeout-och-fnuttar
