Tabell beregning
Stilsettet for begge tabellene under er slik:
table.demo{border-collapse: collapse;} table.demo td{padding:10px} table.demo thead td{border-bottom-style:solid;font-weight:bold} table.demo tfoot td{border-top-style:solid} table.demo tbody td+td{border-left-style:solid}
Summer
Table(tab1)
A | B | C | D | |
11 | 12 | 13 | 14 | ? |
21 | 22 | 23 | 24 | ? |
31 | 32 | 33 | 34 | ? |
? | ? | ? | ? |
Den involverte Javascriptkoden er slik:
Editer og summer
Her forsøker vi å lage en tabell der brukeren kan skrive verdier inn i feltene og få en øyeblikkelig oppdatering av alle summer. Vi gjør dette ved å sette attributten contenteditable i de cellene som skal være "skrivbare".
Det er mulig ved hjelp av CSS-selectorene å velge ut (og markere) deler av tabellen som er editerbare, f.eks bare en rad.
En funksjonell løsning burde ha bedre kontroll på at det er tall som skrives inn.
Table(tab2)
A | B | C | D | |
11 | 12 | 13 | 14 | ? |
21 | 22 | 23 | 24 | ? |
31 | 32 | 33 | 34 | ? |
? | ? | ? | ? |
og skriv i tabellen
Javascript funksjonen som gjør tabellen editerbar er slik:
// make cells in a table contenteditable function makeEditable(tabid){ // includes the sum (rightmost) col (which it shouldnt) var path='#'+tabid+' tbody td'; // so we use this: path='#'+tabid+' tbody tr td:not(:last-child)'; var cells=document.querySelectorAll(path); for(var ix=0; ix < cells.length; ix++){ cells[ix].contentEditable='true'; cells[ix].onkeyup=function(){ sumAll(tabid)}; cells[ix].style.color="green"; } }