Avatar billede peterterkildsen Nybegynder
20. december 2001 - 15:10 Der er 9 kommentarer og
2 løsninger

Gruppering af elementer

Kan det lade sig gøre at gruppere elementer i javascript? F.eks. ved at gruppere en flok celler i en tabel, og så, når man klikker på én celle og detecter vha. onClick, få alle celler i grupperingen til at udføre én bestemt fælles handling, f.eks. skifte baggrundsfarve til sort.
Det skal bruges til en dynamisk menu, og jeg kan sagtens lave det vha. min sædvanlige \"klytkode\", men jeg kan jo lige så godt lave det ordentligt.
Avatar billede hono Nybegynder
20. december 2001 - 15:13 #1
Ja det kan du godt. Du kan kører alle dine celler igennem med en løkke, og få dem alle til at skifte baggrundsfarve. Jeg prøver lige at stykke et eksempel sammen.

Hono
Avatar billede hono Nybegynder
20. december 2001 - 15:44 #2
nå, jeg har endnu ikke kunnet få det til at virke. Prøver lidt endnu
Avatar billede hono Nybegynder
20. december 2001 - 15:47 #3
nå, nu var den der. Her er koden (virker ikke i alle browser, men i hvert fald IE 5.5+):

<html>
<title>Cellefarver</title>
<head>
<script>
function nyfarve(){
celler = document.getElementsByTagName(\"TD\")
var celleantal = celler.length;                   
for( i = 0; i < celleantal; i++){                  
celler[i].bgColor=\"#000055\";               
}
}
</script>
</head>
<body>
<table>
<tr><td onclick=\"nyfarve();\">Celle 1</td><td onclick=\"nyfarve();\">Celle 2</td><td onclick=\"nyfarve();\">Celle 3</td></tr>
<tr><td onclick=\"nyfarve();\">Celle 4</td><td onclick=\"nyfarve();\">Celle 5</td><td onclick=\"nyfarve();\">Celle 6</td></tr>
</table>
</body>
</html>

Hono
Avatar billede peterterkildsen Nybegynder
20. december 2001 - 15:53 #4
hhhmm...ovenstående virker vel ikke, hvis jeg har flere tabeller på samme side, men kun ønsker at ændre i én tabels egenskaber.
Avatar billede hono Nybegynder
20. december 2001 - 15:57 #5
hmm, så skal det i hvert fald ændres lidt. Er det den første tabel på siden?

Hono
Avatar billede peterterkildsen Nybegynder
20. december 2001 - 16:13 #6
nej. Jeg kan i hvert fald ikke være sikker på, at det er den første.
Avatar billede peterterkildsen Nybegynder
20. december 2001 - 16:17 #7
hhhmmm....kan man ikke give tabellen et eller andet navn, og så derefter referere til alle celler i pågældende tabel?
Avatar billede hono Nybegynder
20. december 2001 - 16:48 #8
Det skal jeg ikke kunne sige. Jeg ved det faktisk ikke.

Hono
Avatar billede ras2000 Nybegynder
20. december 2001 - 17:25 #9
Sårn:
<html>
<title>Cellefarver</title>
<head>
<script>
function nyfarve(el){
celler = el.parentElement.parentElement.getElementsByTagName(\"TD\")
var celleantal = celler.length;                   
for( i = 0; i < celleantal; i++){                 
celler[i].bgColor=\"#000055\";               
}
}
</script>
</head>
<body>
<table>
<tr><td onclick=\"nyfarve(this);\">Celle 1</td><td onclick=\"nyfarve(this);\">Celle 2</td><td onclick=\"nyfarve(this);\">Celle 3</td></tr>
<tr><td onclick=\"nyfarve(this);\">Celle 4</td><td onclick=\"nyfarve(this);\">Celle 5</td><td onclick=\"nyfarve(this);\">Celle 6</td></tr>
</table>
<table>
<tr><td onclick=\"nyfarve(this);\">Celle 1</td><td onclick=\"nyfarve(this);\">Celle 2</td><td onclick=\"nyfarve(this);\">Celle 3</td></tr>
<tr><td onclick=\"nyfarve(this);\">Celle 4</td><td onclick=\"nyfarve(this);\">Celle 5</td><td onclick=\"nyfarve(this);\">Celle 6</td></tr>
</table>
</body>
</html>
Avatar billede peterterkildsen Nybegynder
20. december 2001 - 18:33 #10
hhhmm....det virker fint i IE, men ikke i Netscape, og det er vist ikke - så vidt jeg ved - muligt at få det til at virke i NS - men ellers mange tak for hjælpen
Avatar billede ras2000 Nybegynder
21. december 2001 - 10:45 #11
Tja, det må jo kunne lade sig gøre, jeg ved bare ikke hvordan. Hvis du vil spare noget kode, kan du skrive det sådan her:
<html>
<title>Cellefarver</title>
<head>
<script>
function nyfarve(el){
celler = el.getElementsByTagName(\"TD\")
var celleantal = celler.length;                   
for( i = 0; i < celleantal; i++){                 
celler[i].bgColor=\"#000055\";               
}
}
</script>
</head>
<body>
<table onclick=\"nyfarve(this)\">
<tr><td>Celle 1</td><td>Celle 2</td><td>Celle 3</td></tr>
<tr><td>Celle 4</td><td>Celle 5</td><td>Celle 6</td></tr>
</table>
<table onclick=\"nyfarve(this)\">
<tr><td>Celle 1</td><td>Celle 2</td><td>Celle 3</td></tr>
<tr><td>Celle 4</td><td>Celle 5</td><td>Celle 6</td></tr>
</table>
</body>
</html>
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester