---
title: "Objektproblem"
type: "forum-thread"
url: "https://www.webforum.nu/amne/javascript/18871-objektproblem"
topic: "JavaScript"
topic_url: "https://www.webforum.nu/amne/javascript"
author: "Andy"
published: "2002-02-07T19:46:00.000Z"
updated: "2002-02-07T21:15:00.000Z"
replies: 3
views: 174
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/18871-objektproblem"
---

# Objektproblem

## #1 — Andy, 2002-02-07T19:46Z

Halloj

Tänkte lära mig att göra egna objekt lite bättre.
Har en div på en sida som symboliserar solen. Runt denna cirkulerar en annan div som skall föreställa jorden, som i sin tur har en div som symboliserar månen kretsande omkring sig. Får det dock inte att fungera med både jorden och månen cirkulerande på samma gång. Vad gör jag för fel?

```
<html>
<head>
<title></title>

<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript">
function planet(planetName,parentPlanet,radie) {
	this.planetName = planetName
	this.parentPlanet = parentPlanet
	this.radie = radie
	this.vinkel = 0
}

function init(obj,parentPlanet,radie) {
	obj = new planet(obj,parentPlanet,radie)
	animate(obj);
}

function animate(obj) {
	x = Math.round((Math.cos(obj.vinkel * Math.PI/180) * obj.radie)) + parseInt(document.all(obj.parentPlanet).style.left);
	y = Math.round((Math.sin(obj.vinkel * Math.PI/180) * obj.radie)) + parseInt(document.all(obj.parentPlanet).style.top);
	document.all(obj.planetName).style.left = x
	document.all(obj.planetName).style.top = y
	obj.vinkel = (obj.vinkel == 360) ? 1 : obj.vinkel + 2;
	newObj = obj
	obj.timeout = setTimeout('animate(newObj)', 1);
}
</SCRIPT>

</head>

<body onLoad="init('earth','sun',100); init('moon','earth',50);">

<div id="moon" style="position:absolute; top:0px; left:0px;">Moon</div>

<div id="earth" style="position:absolute; top:0px; left:0px;">Earth</div>

<div id="sun" style="position:absolute; top:300px; left:400px;">Sun</div>

</body>

</html>
```

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

## #2 — Jojoxx, 2002-02-07T20:49Z

Utan att testa så säger jag att felet ligger i din setTimeout. När den aktiveras körs detta;

animate(newObj)

Vad är då newObj? Jo, det är sen senaste tilldelningen som sker i föregående körning av funktionen animate(), och eftersom det är samma funktion som anropas från init() varje gång du skapar ett nytt objekt vet du inte vilket objekt som senast kördes. Resultatet av scriptet blir således ovisst. Antagligen pannkaka vilket det brukar bli när något kan bli fel ;)

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

## #3 — Andy, 2002-02-07T20:55Z

Misstänkte själv att det var där problemet låg. Hur löser jag det då?

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

## #4 — Jojoxx, 2002-02-07T21:15Z

Du kan ex. skicka med namnet på objektet istället för själva objektet och sedan använda eval för att plocka fram det.

Exempel:

```
var foo="En sträng.";
var bar=eval('foo');
alert(bar);
```

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

---

Tråden på webben: https://www.webforum.nu/amne/javascript/18871-objektproblem
