| 
 <!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>
 
 
 
 
 
 |