Building a Table in JavaScript

I am trying to create a table in JavaScript that contains a list of degrees, radians, sin, cos, and tan.

I have the math right, but I am having trouble with the creating the table.

It is not displaying. I know it is something simple, but I am missing it.

Ideas?

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html><head><title>Computer Science 553 Lab Pages: Lab 3: Trig Functions On The Fly</title>
<link rel="stylesheet" type="text/css" href="style.css" />
</head>
<body>
<h1>Table of Sines, Cosines, and Tangents</h1>
<h2>Charles P. Scott    |    9092</h2>
<hr>

<script type="taxt/javaScript">
// Setting Up Variables
var myTable			=	document.createElement("table");
var tRowH			=	document.createElement('tr');
var tCellH_Radians	=	document.createElement('th');
var tCellH_Degrees	=	document.createElement('th');
var tCellH_SinX		=	document.createElement('th');
var tCellH_CosX		=	document.createElement('th');
var tCellH_TanX		=	document.createElement('th');
var angleR			=	0;
var angleD			=	0;

// Building the Table
document.appendChild(myTable); // <table>

// Creating the Header Row
myTable.appendChild(tRowH); // <th>

// Building the Cells in the Header Row
tRowH.appendChild(tCellH_Radians);
tRowH.appendChild(tCellH_Degrees);
tRowH.appendChild(tCellH_SinX);
tRowH.appendChild(tCellH_CosX);
tRowH.appendChild(tCellH_TanX);

// Populate the Cells in the Header Row
tCellH_Radians.appendChild(document.createTextNode('Radians'));
tCellH_Degrees.appendChild(document.createTextNode('Degrees'));
tCellH_SinX.appendChild(document.createTextNode('sin(x)'));
tCellH_CosX.appendChild(document.createTextNode('cos(x)'));
tCellH_TanX.appendChild(document.createTextNode('tan(x)'));

for ( var i = 0; i < 25; i++ ) { // Loop to Build the Interior Table Cells

// Setting Up Variables
	var tRowC			=	document.createElement('tr');
	var tCell_Radians	=	document.createElement('td');
	var tCell_Degrees	=	document.createElement('td');
	var angleRImg		=	document.createElement('img');
		angleRImg.setAttribute('src', 'images/img' + angleD + '.gif');
	var tCell_SinX		=	document.createElement('td');
	var result_SinX		=	Math.round(Math.sin(angleR)*100000)/100000;
	var tCell_CosX		=	document.createElement('td');
	var result_CosX		=	Math.round(Math.cos(angleR)*100000)/100000;
	var tCell_TanX		=	document.createElement('td');

	// Building the Loop Row
	myTable.appendChild(tRowC); // <tr>
	if ((i+1)%2==0){
		tRowC.setAttribute('class','alt'); // Sets up the Alternate Row Color
	}
	
// Building the Table Cells
	tRowC.appendChild(tCell_Radians);
	tRowC.appendChild(tCell_Degrees);
	tRowC.appendChild(tCell_SinX);
	tRowC.appendChild(tCell_CosX);
	tRowC.appendChild(tCell_TanX);

// Populating the Cells
	tCell_Radians.appendChild(angleRImg);
	tCell_Degrees.appendChild(document.createTextNode(angleD + "°"));
	tCell_SinX.appendChild(document.createTextNode(result_SinX));
	tCell_CosX.appendChild(document.createTextNode(resultCosX));
		if ((angleD === 90) || (angleD === 270)){ // Setting Angles 90 and 270 to "Undefined"
			var resultTanX = "Undefined";
		}
		else {
			var resultTanX = Math.round(Math.tan(angleR)*100000)/100000;
		}
	tCell_TanX.appendChild(document.createTextNode(resultTanX));

// Incrementing the Angles
	angleR += Math.PI/12; // The Same as 15 Degrees
	angleD += 15;
}
</script>

<br /><br />
<a href="javascript:history.go(-1)">[ Go Back ]</a>
</body></html>

Hi JustAsIAm,
Indeed some simple things/typo’s:

  • A missing charset in the <head>: <meta http-equiv=“content-type” content=“text/html;charset=utf-8”>

  • <script type=“taxt/javaScript”> must be:
    <script type=“text/javascript”>

  • document.appendChild(myTable); must be:
    document.body.appendChild(myTable);

  • tCell_CosX.appendChild(document.createTextNode(resultCosX)); must be:
    tCell_CosX.appendChild(document.createTextNode(result_CosX));

Then I get a table from 0 to 360 degrees in steps of 15. :slight_smile:

have you considered using table DOM commands insertCell(), insertRow() etc instead of manually creating each tag with createElement? The only two tags in a table that have to be created using a createElement call are ‘table’ and ‘tbody’, the rest can be done via table DOM calls.

Francky, thank you for all of that. I ran some tests of my own and found the same things. (except for the <meta http-equiv=“content-type” content=“text/html;charset=utf-8”> thing). Why do I need that?

felgall, I am very new to JS and although I finally got past document.write, this was my next level. I do not currently know anything about DOM calls. Want to enlighten me?

There is a series of 400+ JavaScript examples on the site that is the first link in my signature (the red one).

felgall, thank you very much. I will be looking at that now.