---
title: "Kan man skriva en funktion så här?"
type: "forum-thread"
url: "https://www.webforum.nu/amne/javascript/156644-kan-man-skriva-en-funktion-så-här"
topic: "JavaScript"
topic_url: "https://www.webforum.nu/amne/javascript"
author: "vic"
published: "2007-02-01T00:06:47.000Z"
updated: "2007-02-01T18:21:04.000Z"
replies: 7
views: 573
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/156644-kan-man-skriva-en-funktion-så-här"
---

# Kan man skriva en funktion så här?

## #1 — vic, 2007-02-01T00:06Z

```
document.getElementByClassName('blink').onmousemove = function()
  {
  ...
  }
```

När man hovrar över en div skall den byta färg. Det kan bli en väldans massa divvar och då vill jag hellre ha en universal grej i mitt javascript än att skriva ut eventet onmouseover="document..." för varje div i htmlkoden. Hur ska man egentligen göra?

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

## #2 — Peter S, 2007-02-01T00:33Z

Nej, inte riktigt. Är \<div\>:arnas id namngivna enligt något mönster, säg, "div_1", "div_2", o.s.v.? Då

```
window.onload = function()
{
 var i = 1, elm;
 while (elm = document.getElementById("div_" + (i++))){
  elm.onmouseover = function()
  {
   this.style.backgroundColor = "#777";
  }
  elm.onmouseout = function()
  {
   this.style.backgroundColor = "#fff";
  }
 }
}
```

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

## #3 — vic, 2007-02-01T11:42Z

Du besparar mig dyrbar tid ännu en gång Peter :)

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

## #4 — Peter S, 2007-02-01T11:47Z

Det går ju visserligen att skriva en funktion getElementsByClassName() som hämtar alla element vars värde på class-attributet uppfyller ett visst villkor, skulle man inte vilja tilldela id-värden till varje \<div\>.

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

## #5 — spango, 2007-02-01T12:42Z

Vill man göra för *alla* divvar behöver de inte ens vara namngivna, man kan ju använda document.getElementsByTagName("div"):

```
window.onload = function()
{
 var divs = document.getElementsByTagName("div");
 for (var i = 0; i < divs.length; ++i){
  divs[i].onmouseover = function()
  {
   this.style.backgroundColor = "#777";
  }
  divs[i].onmouseout = function()
  {
   this.style.backgroundColor = "#fff";
  }
 }
}
```

... men det är nog klokt att göra som Peter S föreslår och ha en klass på dem som man kollar. Divvar är ju tänkta att vara generella element, man kan ju vilja ha andra divvar som inte har mouseover/out-effekt.

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

## #6 — vic, 2007-02-01T13:44Z

Kan det finnas en fördel med att ta bort alla event som man har i ett htmldokumentet och flytta in dom i window.onload = function {}? Min fråga är kanske mer om det egentligen finns någon nackdel med det?

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

## #7 — Peter S, 2007-02-01T15:27Z

Den enda fördelen är att HTML-koden blir renare: du separerar HTML:en och JS:en. Man kan likna det vid att länka in all CSS via externa filer, i stället för att skriva style="..." direkt i taggarna.

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

## #8 — vic, 2007-02-01T18:21Z

Så länge det inte påverkar funktionernas "prestanda", eller vad jag nu ska kalla det, så är det ju bara så mycket skönare att kunna köra in alla små funktioner i window.onload

// Tack grabbar för avsatt tid!

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

---

Tråden på webben: https://www.webforum.nu/amne/javascript/156644-kan-man-skriva-en-funktion-så-här
