<!-- *********************************************************** Example 5-11 "Dynamic HTML:The Definitive Reference" 2nd Edition by Danny Goodman Published by O'Reilly & Associates ISBN 0-596-00316-1 http://www.oreilly.com Copyright 2002 Danny Goodman. All Rights Reserved. ************************************************************ --> <html> <head> <title>Dynamic Table</title> <style type="text/css"> body {background-color:#ffffff} table {table-collapse:collapse; border-spacing:0} td {border:2px groove black; padding:7px} th {border:2px groove black; padding:7px} .ctr {text-align:center} </style> <script language="JavaScript" type="text/javascript"> // Table data -- an array of objects var jsData = new Array(); jsData[0] = {bowl:"I", year:1967, winner:"Packers", winScore:35, loser:"Chiefs", losScore:10}; jsData[1] = {bowl:"II", year:1968, winner:"Packers", winScore:33, loser:"Raiders (Oakland)", losScore:14}; jsData[2] = {bowl:"III", year:1969, winner:"Jets", winScore:16, loser:"Colts (Balto)", losScore:7}; jsData[3] = {bowl:"IV", year:1970, winner:"Chiefs", winScore:23, loser:"Vikings", losScore:7}; jsData[4] = {bowl:"V", year:1971, winner:"Colts (Balto)", winScore:16, loser:"Cowboys", losScore:13};
// Sorting functions (invoked by sortTable()) function sortByYear(a, b) { return a.year - b.year; } function sortByWinScore(a, b) { return b.winScore - a.winScore; } function sortByLosScore(a, b) { return b.losScore - a.losScore; } function sortByWinner(a, b) { a = a.winner.toLowerCase(); b = b.winner.toLowerCase(); return ((a < b) ? -1 : ((a > b) ? 1 : 0)); } function sortByLoser(a, b) { a = a.loser.toLowerCase(); b = b.loser.toLowerCase(); return ((a < b) ? -1 : ((a > b) ? 1 : 0)); }
// Sorting function dispatcher (invoked by table column links) function sortTable(link) { switch (link.firstChild.nodeValue) { case "Year" : jsData.sort(sortByYear); break; case "Winner" : jsData.sort(sortByWinner); break; case "Loser" : jsData.sort(sortByLoser); break; case "Win" : jsData.sort(sortByWinScore); break; case "Lose" : jsData.sort(sortByLosScore); break; } drawTable("bowlData") }
// Remove existing table rows function clearTable(tbody) { while (tbody.rows.length > 0) { tbody.deleteRow(0); } }
// Draw table from 'jsData' array of objects function drawTable(tbody) { var tr, td; tbody = document.getElementById(tbody); // remove existing rows, if any clearTable(tbody); // loop through data source for (var i = 0; i < jsData.length; i++) { tr = tbody.insertRow(tbody.rows.length); td = tr.insertCell(tr.cells.length); td.setAttribute("class", "ctr"); td.innerHTML = jsData[i].bowl; td = tr.insertCell(tr.cells.length); td.innerHTML = jsData[i].year; td = tr.insertCell(tr.cells.length); td.innerHTML = jsData[i].winner; td = tr.insertCell(tr.cells.length); td.innerHTML = jsData[i].loser; td = tr.insertCell(tr.cells.length); td.setAttribute("class", "ctr"); td.innerHTML = jsData[i].winScore + " - " + jsData[i].losScore; } } </script> </head> <body onload="drawTable('bowlData')"> <h1>Super Bowl Games</h1> <hr> <table id="bowlGames"> <thead> <tr><th>Bowl</th> <th><a href="#" title="Sort by Year" onclick="sortTable(this)">Year</a></th> <th><a href="#" title="Sort by Winning Team" onclick="sortTable(this)">Winner</a></th> <th><a href="#" title="Sort by Losing Team" onclick="sortTable(this)">Loser</a></th> <th>Score <a href="#" title="Sort by Winning Score" onclick="sortTable(this)">Win</a> - <a href="#" title="Sort by Losing Score" onclick="sortTable(this)">Lose</a></th> </tr> </thead> <tbody id="bowlData"></tbody> </table> </body> </html>
|