07. august 2003 - 13:12
Der er
11 kommentarer og 1 løsning
flere style:display
Jeg har nogle rækker i en tabel <tr id="a" style="display : none;"> <td></td> </tr> <tr id="a" style="display : none;"> <td></td> </tr> <tr id="a" style="display : none;"> <td></td> </tr> Jeg vil så gerne folde dem ALLE sammen ud med et link - altså display : show; Her bruger jeg et link: <a href="#" onclick="toggle('a');">vis</a> Det virker folder så den første ud, men jeg vil gerne have den til at folde dem alle sammen ud?
Annonceindlæg fra SuperOffice
07. august 2003 - 13:31
#1
har ændret lidt, prøv den her ;) <script type="text/javascript"> function toggle(){ e = document.getElementsByTagName('div'); for(i=0;i<e.length;i++){ if (e[i].id == "a"){ e[i].style.display = "inline"; } } } </script> <div id="a" style="display : none;"> <tr> <td>hej</td> </tr> </div> <div id="a" style="display : none;"> <tr> <td>dav</td> </tr> </div> <div id="a" style="display : none;"> <tr> <td>wee</td> </tr> </div> <a href="#" onclick="toggle('a');">vis</a>
07. august 2003 - 13:36
#2
functionen skal sefølgelig se sådan ud ;) <script type="text/javascript"> function toggle(d){ e = document.getElementsByTagName('div'); for(i=0;i<e.length;i++){ if (e[i].id == d){ e[i].style.display = "inline"; } } } </script>
07. august 2003 - 13:54
#3
Her er en generisk funktion, der kan "toggle" rækker på en hvilken som helst tabel. Kald funktionen med tre parametre: 1. id på tabellen, 2. nummeret på den første række, der skal "toggles" (første række er nummer 0), samt 3. antal rækker i alt: <script> function toggleRows(strTableId,intStart,intNumber) { var oTbl = document.getElementById(strTableId); var oRow; if (oTbl == null) return; for (var i=intStart; i<=intStart+intNumber-1; i++) { oRow = oTbl.rows(i); if (oRow != null) oRow.style.display = (oRow.style.display == 'none') ? 'block' : 'none'; } } </script> I dit tilfælde kan du altså blot give tabellen et id (hvis ikke den har et i forvejen), finde nummeret på den første række, f.eks. 0, og kalde funktionen sådan her for vise/skjule de 3 rækker: <a href="#" onclick="toggleRows('tabel_id',0,3);">vis</a>
07. august 2003 - 14:18
#4
Grunken - dit eksempel er faktisk godt, der er bare det problem, at hvis man sætter <table></table> rundt om, så vil den ikke :/
07. august 2003 - 14:20
#5
Grunken - svar... Sådan ser det ud: </html> <script type="text/javascript"> function toggle(d){ e = document.getElementsByTagName('tr'); for(i=0;i<e.length;i++){ e[i].style.display = "none"; } for(i=0;i<e.length;i++){ if (e[i].id == d){ e[i].style.display = "inline"; } } } </script> <table> <tr id="a" style="display : none;"> <td>hej</td> </tr> <tr id="a" style="display : none;"> <td>dav</td> </tr> <tr id="a" style="display : none;"> <td>wee</td> </tr> <tr id="b" style="display : none;"> <td>s</td> </tr> <tr id="b" style="display : none;"> <td>s</td> </tr> <tr id="b" style="display : none;"> <td>sdh</td> </tr> </table> <a href="#" onclick="toggle('a');">vis</a> <a href="#" onclick="toggle('b');">vis</a> </html>
07. august 2003 - 14:27
#6
svar ;D fik du det hele til at du ?
07. august 2003 - 14:35
#7
Jeps, nu er der bare det problem, at når jeg folder én ud, må den gerne folde den anden sammen. Derfor prøver jeg lige: function toggle(d){ e = document.getElementsByTagName('tr'); for(i=0;i<e.length;i++){ e[i].style.display = "none"; } for(i=0;i<e.length;i++){ if (e[i].id == d){ e[i].style.display = "inline"; } } } Nu er der så bare det problem, at alle <TR> på hele siden skjuler sig - ikke så fedt. Nogen idé?
07. august 2003 - 14:47
#8
>>id _skal_ være unikt !-) -- så det er ugyldig kode at sætte id på flere elementer til det samme, men det kan da også hurtigt klares med id="a1", a2, a3 osv. -- og så f.eks.: if (e[i].id.indexOf(d)>-1){
07. august 2003 - 14:47
#9
hvad hedder de tr's du skal skjule, har de alle et unikt navn a,b,c o.s.v
07. august 2003 - 14:50
#10
Det bliver bare sådan: e = document.getElementsByTagName('tr'); for(i=0;i<e.length;i++){ if (e[i].id == 'ae' || e[i].id == 'fj'){ e[i].style.display = "none"; } } for(i=0;i<e.length;i++){ if (e[i].id == d){ e[i].style.display = "inline"; } } }
07. august 2003 - 15:00
#11
tak for points ;)
07. august 2003 - 15:07
#12
Selv tak :)
Vi tilbyder markedets bedste kurser inden for webudvikling