Avatar billede mik789 Nybegynder
02. maj 2003 - 15:57 Der er 11 kommentarer og
1 løsning

fange elementer med bestemt class

Kan man med getElementsByTagName() fange f.eks. alle <div> tags med class="something" ???
//mik
Avatar billede mik789 Nybegynder
02. maj 2003 - 15:58 #1
eller på nogen anden måde?
Avatar billede summersun Nybegynder
02. maj 2003 - 16:08 #2
nej..

kun name.. :)
Avatar billede Slettet bruger
02. maj 2003 - 16:09 #3
Ja:

function getDivsByClassName(cn) {
  temp = new Array();
  arr = document.getElementsByTagName("div");
  for (i = 0; i < arr.length; i++)
    if (arr[i].className == cn)
      temp[temp.length] = arr[i];
  return temp;
}
Avatar billede Slettet bruger
02. maj 2003 - 16:10 #4
Det returnerer et array bestående af alle div-elementer med className="DIT-CLASSNAME".
Bare kald:

divArray = getDivsByClassName("klasse");
Avatar billede mik789 Nybegynder
02. maj 2003 - 16:15 #5
phoenixv> Lyder godt. Og kan man derfra så tildele egenskaber til disse divs (ligesom man kan med getElementById("minId")). F.eks.:

divArray.style.backgroundColor = 'red';
?
Avatar billede Slettet bruger
02. maj 2003 - 16:28 #6
Ja, men du skal huske at hver div med class="etellerandet" er i arrayet. Derfor skal du enten gøre således:

divArray[2].style.backgroundColor = "red"; //Den tredje div bliver rød

... eller:

for (i = 0; i < divArray.length; i++)
  divArray[2].style.backgroundColor = "red"; //Alle divs bliver røde
Avatar billede Slettet bruger
02. maj 2003 - 16:28 #7
Hov:

for (i = 0; i < divArray.length; i++)
  divArray[i].style.backgroundColor = "red"; //Alle divs bliver røde
Avatar billede mik789 Nybegynder
02. maj 2003 - 16:30 #8
jae - det mente jeg da nok ;-)

tak for hjælpen. skal lige eksperimentere lidt med det
Avatar billede Slettet bruger
02. maj 2003 - 16:32 #9
Ok. Bare vend tilbage, hvis du skal bruge hjælp! :)
Avatar billede mik789 Nybegynder
02. maj 2003 - 16:47 #10
det virker jo fint!
Avatar billede mik789 Nybegynder
02. maj 2003 - 17:13 #11
phoenixv> ja, det virker, men jeg vil godt have det til at kunne lidt mere.

I første omgang forsøgte jeg med fem divs: to med class="dyr" der er blå, og tre med class="plante" der er røde. Så kan jeg ved at gå videre med dit script uden videre skifte farve på f.eks. alle med class="plante" og skifte dem tilbage igen. Nemlig med flg.:

<script type="text/javascript"><!--
function getDivsByClassName(cn) {
  temp = new Array();
  arr = document.getElementsByTagName("div");
  for (i = 0; i < arr.length; i++)
    if (arr[i].className == cn)
      temp[temp.length] = arr[i];
  return temp;
}

function changeStyle() {
divArray = getDivsByClassName("plante");
for (i=0; i<divArray.length; i++) {
  if (divArray[i].style.backgroundColor != 'green') {
  divArray[i].style.backgroundColor = 'green';
  }else{
  divArray[i].style.backgroundColor = 'red'
  }
}
}
//--></script>

Men hvis nu én af de tre divs med class="plante" i forvejen er grøn, ville jeg godt have at scriptet kunne finde ud af kun at ændre farve på de der ikke er grøn og lade den grønne blive ved at være grøn. Og tilsvarende omvendt når der skal skiftes tilbage igen: hvis en af div'erne med class="plante" er rød og kun to er grønne, skal kun de to grønne skifte tilbage. Jeg har lavet et eksempel her: www.dahr.dk/Web/getElementsByClass.html hvor jeg netop har ladet en af de tre divs med class="plante" i forvejen være grøn.
Der kan du se hvad der er galt hvis en af de tre div'er i forvejen har en forkert farve: så skifter den selvfølgelig modsat. Dvs. hvad der er grønt bliver rødt og hvad der er rødt bliver grønt. Men jeg vil godt have scriptet til kun at ændre farve på dem der har forkert farve og bevare farven på dem der har den rigtige.
Avatar billede mik789 Nybegynder
02. maj 2003 - 17:32 #12
OK -det er ikke fair. Jeg laver det sidste sp. som et nyt sp.
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