<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/tr/xhtml1/DTD/xhtml1-transitional.dtd"> <!-- Example File From "JavaScript and DHTML Cookbook" Published by O'Reilly & Associates Copyright 2003 Danny Goodman --> <html> <head> <title>Recipe 14.16</title> <style rel="stylesheet" id="mainStyle" type="text/css"> html {background-color:#cccccc} body {background-color:#eeeeee; font-family:Tahoma,Arial,Helvetica,sans-serif; font-size:12px; margin-left:15%; margin-right:15%; border:3px groove darkred; padding:15px} h1 {text-align:right; font-size:1.5em; font-weight:bold} h2 {text-align:left; font-size:1.1em; font-weight:bold; text-decoration:underline} .buttons {margin-top:10px}
</style> <style type="text/css"> table {table-collapse:collapse; border-spacing:0} td {border:2px groove black; padding:7px; background-color:#ccffcc} th {border:2px groove black; padding:7px; background-color:#ffffcc} .ctr {text-align:center} </style> <script type="text/javascript"> // Table data -- an array of objects var jsData = new Array(); jsData[0] = {location:"Uruguay", year:1930, winner:"Uruguay", winScore:4, loser:"Argentina", losScore:2}; jsData[1] = {location:"Italy", year:1934, winner:"Italy", winScore:2, loser:"Czechoslovakia", losScore:1}; jsData[2] = {location:"France", year:1938, winner:"Italy", winScore:4, loser:"Hungary", losScore:2}; jsData[3] = {location:"Brazil", year:1950, winner:"Uruguay", winScore:2, loser:"Brazil", losScore:1}; jsData[4] = {location:"Switzerland", year:1954, winner:"West Germany", winScore:3, loser:"Hungary", losScore:2};
// 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("align", "center"); td.innerHTML = jsData[i].year; td = tr.insertCell(tr.cells.length); td.innerHTML = jsData[i].location; 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("align", "center"); td.innerHTML = jsData[i].winScore + " - " + jsData[i].losScore; } }
// Remove existing table rows function clearTable(tbody) { while (tbody.rows.length > 0) { tbody.deleteRow(0); } }
// Sorting function dispatcher (invoked by table column links) function sortTable(link) { switch (link.firstChild.nodeValue) { case "Year" : jsData.sort(sortByYear); break; case "Host Country" : jsData.sort(sortByHost); 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("matchData") return false }
// Sorting functions (invoked by sortTable()) function sortByYear(a, b) { return a.year - b.year; } function sortByHost(a, b) { a = a.location.toLowerCase(); b = b.location.toLowerCase(); return ((a < b) ? -1 : ((a > b) ? 1 : 0)); } 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)); }
</script> </head> <body onload="drawTable('matchData')"> <h1>Transforming JavaScript Data into HTML Tables</h1> <hr />
<table id="cupFinals"> <thead> <tr> <th><a href="#" title="Sort by Year" onclick="return sortTable(this)">Year</a></th> <th><a href="#" title="Sort by Country" onclick="return sortTable(this)">Host Country</a></th> <th><a href="#" title="Sort by Winning Team" onclick="return sortTable(this)">Winner</a></th> <th><a href="#" title="Sort by Losing Team" onclick="return sortTable(this)">Loser</a></th> <th>Score <a href="#" title="Sort by Winning Score" onclick="return sortTable(this)">Win</a> - <a href="#" title="Sort by Losing Score" onclick="return sortTable(this)">Lose</a></th> </tr> </thead> <tbody id="matchData"></tbody> </table>
</body> </html>
|