22. marts 2007 - 11:57
Der er
14 kommentarer og 1 løsning
Finde alle id'er i et doc
Hvordan kan jeg finde alle id="etellerandet" i et doc? Som eks: function my_array($id) { id_vars = new Array("juhu", "nejda", "jups"); var i = 0; var len = id_vars.length; while( i < len ) { if($id != id_vars[i]) { document.write("<br><b>"+id_vars[i]+"</b>"); } i++; } } her er det så array'et "id_vars" jeg gerne vil hente dynamisk. Evt. kun alle id'er hvis navn starter med f.eks. "lag_"....
Annonceindlæg tema
Forsvar & beredskab
Cybersikkerhed, realtidsdata og robuste it-systemer er blevet fundamentet for moderne forsvar.
22. marts 2007 - 12:20
#1
Hvad og hvordan skal du bruge det ?-) -- umiddelbart lyder det som nemest at hente alle udgaver af en bestemt slags tag med getElementsByTagName, og så teste dem for de(n) krævede egenskab ...
22. marts 2007 - 12:26
#2
Leger med dette: <html><head><title>Id test</title> <script type="text/javascript"> // javascript found at exp.dk function get_id ($id) { if (document.all && document.getElementById) { return document.all($id); } else if (!document.all && document.getElementById) { return document.getElementById($id); } else { return false; } } function true_id($id) { if (($bcontent = get_id($id))) { return $bcontent.style; } else { return false; } } function box_click ($id) { $bcontent = true_id($id); if ($bcontent.visibility == 'hidden') { $bcontent.display = ''; $bcontent.visibility = 'visible'; } else { $bcontent.display = 'none'; $bcontent.visibility = 'hidden'; } } function close_other($id) { id_vars = new Array("lag_et", "lag_to", "lag_tre"); var i = 0; var len = id_vars.length; while( i < len ) { if($id != id_vars[i]) { $bcontent = true_id(id_vars[i]); $bcontent.display = 'none'; $bcontent.visibility = 'hidden'; } i++; } } </script> </head> <body> <form> <input type="button" value="test et" onclick="box_click('lag_et');close_other('lag_et');"> <input type="button" value="test to" onclick="box_click('lag_to');close_other('lag_to');"> <input type="button" value="test tre" onclick="box_click('lag_tre');close_other('lag_tre');"> </form> <div id="lag_et" style="position: relative; padding: 8px; visibility: hidden; display: none;"> Et </div> <div id="lag_to" style="position: relative; padding: 8px; visibility: hidden; display: none;"> To </div> <div id="lag_tre" style="position: relative; padding: 8px; visibility: hidden; display: none;"> Tre </div> </body></html> Altså man kan klikke på en knap, og få vist/skjult et lag. Men bruges "box_click" alene, vil evt. andre viste lag stadig være synlige. De skal gemmes, ved klik på knap. Men i stedet for at putte et nyt "lag-navn" ind i array'et id_vars ville jeg gerne kunne hente dem dynamisk. getElementsByTagName ? Hvordan virker det?
22. marts 2007 - 12:33
#3
-- så er det nemmeste at huske, hvilket lag, der blev vist før ... Prøv f.eks. sådan: <script type="text/javascript"> var oldElm = null; function box_click(id){ elm = document.getElementById(id); if(oldElm && oldElm != elm) oldElm.style.display = 'none'; elm.style.display = "block"; oldElm = elm; } window.onload = function(){ oldElm = document.getElementById('lag_et'); } </script> <form> <input type="button" value="test et" onclick="box_click('lag_et');return false;"> <input type="button" value="test to" onclick="box_click('lag_to');return false;"> <input type="button" value="test tre" onclick="box_click('lag_tre');return false;"> </form> <div id="lag_et" style="position: relative; padding: 8px; display: block;"> Et </div> <div id="lag_to" style="position: relative; padding: 8px; display: none;"> To </div> <div id="lag_tre" style="position: relative; padding: 8px; display: none;"> Tre </div>
22. marts 2007 - 12:45
#4
Du må gerne smide et svar! :O)
22. marts 2007 - 12:49
#5
Velbekomme '-)
22. marts 2007 - 12:54
#6
Takker for hjælp! Men kan man finde alle id'er i et doc? :O)
22. marts 2007 - 13:02
#7
Ja, det kan man godt, men som skrevet i første indlæg, virker det mest hensigtsmæssigt, at bruge getElementsByTagName ... f.eks. id_vars = ["juhu","nejda","jups"]; function getAllDivs(){ var divs = []; var elms = document.getElementsByTagName("div"); for(i=0,im=elms.length;im>i;i++){ for(j=0,jm=id_vars.length;jm>j;j++){ if(elms[i].id == id_vars[j]) divs.push(elms[i]); } } return divs; } -- og tak for point ;~}
22. marts 2007 - 13:21
#8
hmm, nu prøver jeg lige så'n her: function do_print_div() { var divs = []; var elms = document.getElementsByTagName("div"); for(i=0,im=elms.length;im>i;i++){ divs.push(elms[i]); } var i = 0; var len = divs.length; while( i < len ) { document.write("<br><b>"+divs[i]+"</b>"); i++; } } Den skriver [object] med fed og linie skift! :O) Hvordan får jeg navnet?
22. marts 2007 - 13:31
#9
<ole> Prøv: document.write("<br><b>"+divs[i].getAttribute("id")+"</b>"); /mvh </bole>
22. marts 2007 - 13:33
#10
Det er fordi, du har fat i objekterne, skal du bruge id'et, skal du bede om det (og så skal du bruge en for-løkke, når du har brug for den !-) -- og husk at document.write sletter det, der var i dokumentet i forvejen ... var txt =""; for(i=0,im=divs.length;im>i;i++){ txt += divs[i].id + "\n"; } alert(txt);
22. marts 2007 - 13:48
#11
takker, takker, takker !!!
22. marts 2007 - 13:56
#12
>>ole *lol* -- jeg kan godt li' at du bruger document.write ...getAttribute !-)
22. marts 2007 - 14:28
#13
Det er faktisk helt og aldeles efter 'Testamentet' ... det er blot, fordi du vantro har fået XHTML på hjernen, at det undrer dig ;o) getAttribute har hørt til alm. (HTML-)DOM siden 98-99 (såvidt jeg husker) - og der er intet i vejen med at bruge document.write under HTML. De to er således helt og aldeles kompatible. Problemet opstår først med XHTML, fordi document-objektet her skifter rolle - hvilket gør write-metoden ubrugelig. At det så ikke ligefrem ligner mig at bruge document.write er en hel anden ting ... jeg overså den fuldkommen i eksemplet (copy/paste) =)
22. marts 2007 - 14:37
#14
Tjah, jeg er også begyndt at vænne mig til .s/getAttribute, men i sammenhæng med document.write ville jeg simpelthen være så doven, at jeg ikke gad skrive de ekstra 16 tegn !-)
22. marts 2007 - 15:13
#15
Det er vanskeligt at være mere enig i noget somhelst ... bli'r helt nervøs for, om jeg er begyndt at lide af tvangshandlinger på mine ældre dage! ;oD
Vi tilbyder markedets bedste kurser inden for webudvikling