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 ?
Annonceindlæg tema
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>
20. august 2008 - 11:15
#2
aElementer=findIDs("test"); skal selvfølgelig først køres, når alle elementer på siden er genereret.
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>
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.
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>
20. august 2008 - 12:27
#6
Det virker perfekt nu.
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);
20. august 2008 - 12:28
#8
Tak for point! :)
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>
Vi tilbyder markedets bedste kurser inden for webudvikling