---
title: "Timeout?"
type: "forum-thread"
url: "https://www.webforum.nu/amne/javascript/118345-timeout"
topic: "JavaScript"
topic_url: "https://www.webforum.nu/amne/javascript"
author: "Melitta"
published: "2004-12-19T20:49:36.000Z"
updated: "2004-12-20T07:30:46.000Z"
replies: 9
views: 416
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/118345-timeout"
---

# Timeout?

## #1 — Melitta, 2004-12-19T20:49Z

Hur kommer det sig att denna inte fungerar?

```
function flash(cnt)	{
	var thisobj = document.getElementById(cnt)
	if(view==1){
	thisobj.style.borderColor='#EAEAEA';
	view=0;
	} else {
	thisobj.style.borderColor='#996600';
	view=1;
	}
	setTimeout("flash(cnt)",250);
}
```

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

## #2 — Peeer, 2004-12-19T21:00Z

```
setTimeout("flash('cnt')",250);
```

Om du har ett element som har "cnt" som id vill säga.

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

## #3 — Jojoxx, 2004-12-19T21:07Z

Nej, men det är ett klassiskt fel. När setTimeout körs så körs det exakt så som du skriver det, d.v.s.
**flash(cnt)**
Och då är *cnt* undefined eftersom den variabeln bara lever i funktionen flash.

Alltså;

```
function flash(cnt)	{
	var thisobj = document.getElementById(cnt)
	if(view==1){
	thisobj.style.borderColor='#EAEAEA';
	view=0;
	} else {
	thisobj.style.borderColor='#996600';
	view=1;
	}
	setTimeout("flash('"+cnt+"')",250);
}
```

Så kommer flash att anropas med det som variabeln cnt innehåller vid det tillfälle som du skapar timeouten.

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

## #4 — Peeer, 2004-12-19T21:13Z

Ahhhh.. funktionsanropet var inne i funktionen! :r

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

## #5 — Melitta, 2004-12-19T21:17Z

Och, jag är helt vilsen (grön som ett oplockat äpple) och jag får det inte att lira, här är båda funktionerna.

```
function flash(cnt)	{
	var thisobj = document.getElementById(cnt)
	if(view==1){
	thisobj.style.borderColor='#EAEAEA';
	view=0;
	} else {
	thisobj.style.borderColor='#996600';
	view=1;
	}
	setTimeout("flash('"+cnt+"')",250);
} 
function doColor(cnt,func)	{
	var thisobj = document.getElementById(cnt)
	if(func=='0'){
		flash(cnt);
	} else {
		thisobj.style.borderColor = '#EAEAEA';
	}
}
```

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

## #6 — Jojoxx, 2004-12-19T21:25Z

Det ser inte ut att vara några fel. Så länge som **view** är definierad. Annars kommer du att få ett felmeddelande på det.

```
var view=1;
function flash(cnt)	{
	var thisobj = document.getElementById(cnt)
	if(view==1){
	thisobj.style.borderColor='#EAEAEA';
	view=0;
	} else {
	thisobj.style.borderColor='#996600';
	view=1;
	}
	setTimeout("flash('"+cnt+"')",250);
} 
function doColor(cnt,func)	{
	var thisobj = document.getElementById(cnt)
	if(func=='0'){
		flash(cnt);
	} else {
		thisobj.style.borderColor = '#EAEAEA';
	}
}
```

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

## #7 — Melitta, 2004-12-19T21:29Z

Ok, lite skumt för flash stannar vi första färgbytet.

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

## #8 — Melitta, 2004-12-19T21:36Z

Kan man föresten köra en funktion i en annan?

```
function bla(){ 
function bla2(){
kod
}
}
```

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

## #9 — dectgap, 2004-12-19T23:56Z

> **Melitta skrev:**
>
> Kan man föresten köra en funktion i en annan?
>
>
> ```
> function bla(){ 
> function bla2(){
> kod
> }
> }
> ```

Ja, det går bra.
*function2* i ditt exempel har då tillgång till både variabler som är definierade i sig själv och de som är definierade i *function*.
Funktionen *function* har däremot ingen aning om vad som sker i *function2*.

*function2* kan bara anropas ifrån *function*.

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

## #10 — Jojoxx, 2004-12-20T07:30Z

> **Melitta skrev:**
>
> Ok, lite skumt för flash stannar vi första färgbytet.

En liten tankevurpa kanske. Du har ingenting som avbryter timeouten till flash. Den kommer att snurra i all oändlighet. Eftersom view är definierad globalt kommer även den variabeln att krocka om du kör 2 flash-snurror samtidigt. Men det är antagligen inget problem eftersom du egentligen bara vill köra en flash åt gången.

För att avrbryta en timeout:

```
mytimer=setTimeout(...); // Skapar en timeout och ger den ett handtag.
...
clearTimeout(mytimer); // Avbryter timeouten i fråga.
```

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

---

Tråden på webben: https://www.webforum.nu/amne/javascript/118345-timeout
