Avatar billede badal Nybegynder
20. august 2008 - 11:03 Der er 7 kommentarer og
2 løsninger

Finde et element med document.getElementById

Jeg skal finde alle elementer der starter med "test"? Hvordan kan jeg finde med document.getElementById?

Jeg forstiller mig at der skal laves en eller anden for loop men hvordan ?
Avatar billede w13 Novice
20. august 2008 - 11:15 #1
Hvad er det, der skal starte med "test"? Er det elementernes id'er?

F.eks.:

<script type="text/javascript">
function findIDs(s){
  var a=[];
  for(var i=0,im=document.getElementById("*");i<im.length;i++){
    if(im[i].getAttribute("id").indexOf(s)>-!)a.push(im[i]);
  }
  return a;
}

aElementer=findIDs("test");
</script>
Avatar billede w13 Novice
20. august 2008 - 11:15 #2
aElementer=findIDs("test"); skal selvfølgelig først køres, når alle elementer på siden er genereret.
Avatar billede w13 Novice
20. august 2008 - 11:17 #3
Vi prøver lige igen:

<script type="text/javascript">
function findIDs(s){
  var a=[];
  for(var i=0,im=document.getElementsByTagName("*");i<im.length;i++){
    if(im[i].getAttribute("id").indexOf(s)==0)a.push(im[i]);
  }
  return a;
}

aElementer=findIDs("test");
alert("Der blev fundet "+aElementer.length+" elementer!");
</script>
Avatar billede badal Nybegynder
20. august 2008 - 11:39 #4
hej w13
den virker fint i Expplorer. Men I firefox klager over denne linje: if(im[i].getAttribute("id").indexOf(s)==0)a.push(im[i]);

og fejl meddelsen er:

im[i].getAttribute("id") has no properties.
Avatar billede w13 Novice
20. august 2008 - 11:41 #5
Ok, det er så, hvis et element ikke har et ID. Ret til:

<script type="text/javascript">
function findIDs(s){
  var a=[];
  for(var i=0,im=document.getElementsByTagName("*");i<im.length;i++){
    if(!im[i].getAttribute("id"))continue;
    if(im[i].getAttribute("id").indexOf(s)==0)a.push(im[i]);
  }
  return a;
}

aElementer=findIDs("test");
alert("Der blev fundet "+aElementer.length+" elementer!");
</script>
Avatar billede badal Nybegynder
20. august 2008 - 12:27 #6
Det virker perfekt nu.
Avatar billede softspot Forsker
20. august 2008 - 12:28 #7
Du kan da også lige få en version som benytter Regular Expressions til at søge med:

    function findByRegEx(idregex) {
      var sel = [];
      for(var i = 0, elms = document.getElementsByTagName("*"); i < elms.length; i++) {
        var eid = elms[i].getAttribute("id");
        if(idregex.test(eid))
          sel[sel.length] = elms[i];
      }
      return sel;
    }

Kaldes (ikke overraskende) med et regular expression objekt:

    aElementer = findByRegEx(/^test/i);
Avatar billede w13 Novice
20. august 2008 - 12:28 #8
Tak for point! :)
Avatar billede olebole Juniormester
24. august 2008 - 16:46 #9
<ole>

- men hvis det nu er elementer af en bestemt slags, bliver søgningen betydeligt mere specifik ved at bruge tag-navnet i stedet for '*'  =)

/mvh
</bole>
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

IT-JOB

Unik System Design A/S

QA Engineer

KMD A/S

E2E Tester

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Bliv en del af vores nye mobiludviklingsteam i Cyberdivisionen i Hvidovre