Ik heb een functie geschreven die het mogelijk maakt fieldsets in en uit te klappen in een pagina. Om onverklaarbare redenen gaat dit fout in Firefox (in bijvoorbeeld opera werkt het perfect). Wanneer je een fieldset in/uitklapt verdwijnt bij die fieldset het legend element en verschijnt het weer voor de andere fieldsets. Ik heb de volgende code geschreven:
Testcase is te bekijken op http://www.xs4all.nl/~zeep10/got/index.xhtml
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
| window.addEventListener('load', init, false); function init() { var fieldsets = document.getElementsByTagName('fieldset'); var legends = document.getElementsByTagName('legend'); var i; for (i = 0; i < fieldsets.length; i++) { fieldsets[i].setAttribute('class', 'expanded'); } for (i = 0; i < legends.length; i++) { legends[i].addEventListener('click', expand_collapse, false); } } function expand_collapse(event) { var legend = event.target; var fieldset = getParentNode(legend, 'fieldset'); var class = fieldset.getAttribute('class') == 'expanded' ? 'collapsed' : 'expanded'; fieldset.setAttribute('class', class); } function getParentNode(src_el, node_type) { while (src_el.nodeName != node_type) { src_el = src_el.parentNode; } return src_el; } |
Cascading Stylesheet:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| fieldset.collapsed * { display: none !important; } fieldset.collapsed legend { display: block !important; } fieldset.collapsed legend:before { content: '+ '; } fieldset.expanded legend:before { content: '- '; font-weight: bold; } |
Testcase is te bekijken op http://www.xs4all.nl/~zeep10/got/index.xhtml
Ik ontken het bestaan van IE.