Toon posts:

[Javascript] Alle objecten met unieke eigenschap achterhalen

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb bijv. 15 verschillende div-elementen in mijn body staan. Nu wil ik, zonder dit in bijvoorbeeld een array te declareren, een bepaald aantal van die elementen selecteren in een scriptje om vervolgens een bepaalde eigeschap van al die bepaalde elementen te gebruiken. Kan ik die bepaalde div-elementen een eigenschap meegeven waardoor het script ze kan selecteren, zonder dat ik daarbij door een loopje moet itereren die alle div-elementen controleert op een bepaalde eigenschap - iets wat in sommige van mijn gevallen te zwaar is?

Kortom, stel ik heb de volgende body-inhoud (stel het je uitgebreider voor);

code:
1
2
3
4
5
6
7
8
<div>
    <div>
        <div>
            <div>
            </div>
        </div>
    </div>
<div>


Hoe kan ik dan op een simpele wijze bijvoorbeeld het tweede en het vierde div-element een eigenschap meegeven zodat deze twee elementen direct, zonder bruteforce-achtige iteratie, kan gebruiken in een navolgend scriptje? Heeft iemand hier een suggestie voor?

Ik zat eerst te denken om gebruik te maken van getElementsByName, maar helaas wordt de name-atribuut niet ondersteund door het div-element.

  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Je zou een getElementsByClassName kunnen schrijven of doorzoeken en de code die al eerder is gereleased vinden ;)

[ Voor 18% gewijzigd door BtM909 op 22-05-2006 15:48 ]

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


  • Tsjilp
  • Registratie: November 2002
  • Niet online

Tsjilp

RS[I]ds

getElementsByTagName ?

of de elementen een aparte class meegeven, hiervoor zul je wel moeten itereren om deze alle te achterhalen.

als ik je goed begrijp wil je bepaalde div elementen selecteren aan de hand van een eigenschap, en alle geselecteerde div's moeten een eigenschap wijzigen. Wellicht kun je dan (als je gaat voor de aparte class) de class i.p.v. de div wijzigen. Dan hoef je a. niet te weten om welke div's het gaat en b. niet door je complete pagina te itereren.

Raar... Is zo gek nog niet


  • killercow
  • Registratie: Maart 2000
  • Laatst online: 20-02 08:34

killercow

eth0

Volgens mij is dat niet mogelijk, als er geen native DOM functie is om die objecten te grouperen (zoals bijvoorbeeld getElementsByName), zul ze inderdaad toch echt via een loopje moeten selecten.

Wel kun je met getElementsByTagName alvast een subset van je hele DOM selecten zodat je loop een stuk minder objecten hoeft te bekijken.

openkat.nl al gezien?


  • Mephix
  • Registratie: Augustus 2001
  • Laatst online: 25-11-2025
Wat ik meestal doe is mijn eigen attributes verzinnen en deze met getAttribute toetsen. Je moet er dan inderdaad wel doorheen middels een loopje en de meest efficiente methode is om dan bijvoorbeeld door de getElementsByTagName heen te loopen.

Op die manier laat je de overige elementen met rust en gaat het stukken sneller.


Bijv (niet getest, gaat ff om het idee).

code:
1
2
3
4
5
6
7
8
9
10
11
12
<div date="26-03-2006"></div>
<div date="27-03-2006"></div>
<div date="28-03-2006"></div>

function getElementByDate(date) {
      divs = document.getElementsByTagName('DIV');
            for (i = 0; i < divs.length; i++) {
                  if (divs[i].getAttribute('date') == date) {
                        return divs[i];
                  }
            }
      }

Verwijderd

Topicstarter
BtM909 schreef op maandag 22 mei 2006 @ 15:48:
Je zou een getElementsByClassName kunnen schrijven of doorzoeken en de code die al eerder is gereleased vinden ;)
Dank, het bijzonder mooie resultaat van een hoop benchmarking van Crisp gaat me helpen. Voor de liefhebber: klikkerdeklik.
Pagina: 1