4-4 �ۭq����

JavaScript ªºª«¥ó¥i¤À¤TÃþ¡G
  1. ¤º«Øªºª«¥ó¡]¦p¤é´Á¡B¼Æ¾Çµ¥ª«¥ó¡^
  2. ®Ú¾Úºô­¶ªº¤º®e©Ò«Ø¥ßªº¤å¥óª«¥ó¼Ò«¬¡]Document Object Model ¡A²ºÙ DOM¡^
  3. ¨Ï¥ÎªÌ¦Û­qªºª«¥ó
¥»¸`±N»¡©ú¡u¨Ï¥ÎªÌ¦Û­qªºª«¥ó¡v¡C­Y­n©w¸q¤@­Ó²³æª«¥ó¡A¾Ö¦³¼Æ­ÓÄæ¦ì¡]©Î©Ê½è¡^¡A¥i¨£¤U¦C½d¨Ò¡G

Example¡]object01.htm¡^¡G

¤W­z½d¨Òªº­ì©lÀɦp¤U¡G

­ì©lÀÉ¡]object01.htm¡^¡G¡]¦Ç¦â°Ï°ì«ö¨â¤U§Y¥i«þ¨©¡^
<html>
<head>
<meta HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=big5">
</head>

<body>
<h2 align=center>¦Û­qª«¥ó¥Ü½d¡G²³æª«¥ó</h2>
<hr>

<script src="listProp.js"></script>
<script>
student = new Object();
student.name = "Timmy";
student.age = "25";
student.phone = "575-1114";
listProp(student, "student");
</script>

<hr>
</body>
</html>

¦b¤W­z½d¨Ò¤¤¡A§Ú­Ì¨Ï¥Î new Object() ¨Ó²£¥Í¤@­Ó¨Ï¥ÎªÌ¦Û­qªºª«¥ó¡A¨Ã³]¥ß¦¹ª«¥óªº¤T­Ó©Ê½è¡A¤À§O¬O name, age, ¥H¤Î phone¡C¦¹¥~¡A§Ú­Ì¥Î¨ì¤F¤@­Ó¨ç¼Æ listProp() ¨Ó¦L¥Xª«¥óªº©Ò¦³©Ê½è¡A¦¹¨ç¼Æ¬O¸g¦³¤U¦C±Ô­z¨Ó¥[¤J¦¹ºô­¶¡G

<script src="listProp.js"></script> ¦¹¨ç¼Æªº¤º®e¦p¤U¡G

­ì©lÀÉ¡]listProp.js¡^¡G¡]¦Ç¦â°Ï°ì«ö¨â¤U§Y¥i«þ¨©¡^
// ¦C¦Lª«¥ó©Ê½è
function listProp(obj, objName) {
	for (var i in obj)
		document.writeln(objName+".<font color=red>"+i+"</font> = <font color=green>"+obj[i]+"</font><br>");
}

§Ú­Ì¤]¥i¥H¨Ï¥Î¡u³æ¦C«ü©w¡vªº¤è¦¡¡A¨Ó«ü©w¤@­Óª«¥óªº©Ò¦³©Ê½è¡A¨ä®æ¦¡¦p¤U¡G

newObj = {prop1:value1, prop2:value2, ...}; ­Y¨Ï¥Î¦¹ºØ¤è¦¡¨Ó«ü©w¤@­Óª«¥ó¡A¤W­z½d¨Ò¥i¥H§ï¼g¦p¤U¡G

­ì©lÀÉ¡]object02.htm¡^¡G¡]¦Ç¦â°Ï°ì«ö¨â¤U§Y¥i«þ¨©¡^
<html>
<head>
<meta HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=big5">
</head>

<body>
<h2 align=center>¦Û­qª«¥ó¥Ü½d¡G²³æª«¥ó</h2>
<hr>

<script src="listProp.js"></script>
<script>
student = {"name":"Timmy", "age":25, "phone":"575-1114"}
listProp(student, "student");
</script>

<hr>
</body>
</html>

Hint
¨Ï¥Î¦¹ºØ¡u³æ¦C«ü©w¡vªº¦n³B¬O¡G¥i¥H«ü©w§t¦³ªÅ®æªº©Ê½è¡A¦ý¬O­Y­n¦s¨ú¦¹¡]§t¦³ªÅ®æªº¡^©Ê½è¡A«h¥²¶·¨Ï¥Î¡uª«¥ó["©Ê½è"]¡vªº¤è¦¡¨Ó¶i¦æ¡A¦Ó¤£¯à¨Ï¥Î¡uª«¥ó.©Ê½è¡vªº¤è¦¡¡C

­Y­n´ú¸Õ¤@­Óª«¥ó¬O§_§t¦³¬Y­Ó¯S©wÄæ¦ì¡A¥i¥H¨Ï¥Î in ¹Bºâ¤l¡A¨Ò¦p¡G

Example¡]in01.htm¡^¡G

¤W­z½d¨Òªº­ì©lÀɦp¤U¡G

­ì©lÀÉ¡]in01.htm¡^¡G¡]¦Ç¦â°Ï°ì«ö¨â¤U§Y¥i«þ¨©¡^
<html>
<head>
<meta HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=big5">
</head>

<body>
<h2 align=center>¥H in ¹Bºâ¤l´ú¸Õª«¥óªºÄæ¦ì¬O§_¦s¦b</h2>
<hr>

<script src="listProp.js"></script>
<script>
student = new Object();
student.name = "Timmy";
student.age = "25";
student.phone = "575-1114";
field = "age";
if (field in student)
	document.write(field + " is a field of student<br>");
</script>

<hr>
</body>
</html>

­Y­n²£¥Í¸û½ÆÂøªº¦Û­qª«¥ó¡A¥]§t©w¸q¦¹ª«¥óªº©Ê½è©M¤èªk¡A­º¥ý´N­n©w¸q¦¹ª«¥óªº¡u«Øºc¤l¡v¡]Constructor¡A¤]´N¬O¥Î¨Ó³Ð³yª«¥óªº¨ç¼Æ¡^¡A¨ä§Î¦¡©M¤@¯ë JavaScript ªº¨ç¼Æ«D±`Ãþ¦ü¡C¥H¤U¬O¤@­Ó²³æªº½d¨Ò¡G

Example¡]object03.htm¡^¡G

¤W­z½d¨Òªº­ì©lÀɦp¤U¡G

­ì©lÀÉ¡]object03.htm¡^¡G¡]¦Ç¦â°Ï°ì«ö¨â¤U§Y¥i«þ¨©¡^
<html>
<head>
<meta HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=big5">
</head>

<body>
<h2 align=center>¦Û­qª«¥ó¥Ü½d¡G¸û½ÆÂøª«¥ó</h2>
<hr>

<script>
function student(inputName, inputStudentID, inputAge) {
	this.name = inputName;
	this.studentID = inputStudentID;
	this.age = inputAge;
	this.display = displayStudent;
}

function displayStudent() {
	var outStr="¤j¦W = "+this.name+"\n";
	outStr = outStr + "¾Ç¸¹ = "+this.studentID+"\n";
	outStr = outStr + "¦~ÄÖ = "+this.age;
	alert(outStr);
}

student1 = new student("Alex",695326,23);
student2 = new student("Joey",998735,20);
student3 = new student("Kelvin",978732,22);
</script>

«ö¶s¥HÅã¥Ü¾Ç¥Í¸ê°T¡G
<form>
<input type=button value=student1 onClick="javascript:student1.display()">
<input type=button value=student2 onClick="javascript:student2.display()">
<input type=button value=student3 onClick="javascript:student3.display()">
</form>

<hr>
</body>
</html>

¨ä¤¤¡A§Ú­Ì§Q¥Î¨ç¼Æ student ¨Ó©w¸q¤@­Óª«¥ó½d¥»¡A¥]§t¤F¤T­Ó©Ê½è¡Gname¡BstudentID¡B¤Î age¡C¦¹¥~¡A¦¹ª«¥ó½d¥»¤]¥]§t¤F¤@­Ó¤èªk display()¡A¬O¥Ñ¥t¤@­Ó¨ç¼Æ displayStudent() ©Ò©w¸q¡C¦b³o¨â­Ó¨ç¼Æ¤¤¡A¡uthis¡v¥Nªí©Ò«Øºcªºª«¥ó¡C

¦¹¥~¡Aª«¥ó¤¤¥ç¥i¥]§t¥t¤@­Óª«¥ó¡A¨Ò¦p¡G

Example¡]object04.htm¡^¡G

¤W­z½d¨Òªº­ì©lÀɦp¤U¡G

­ì©lÀÉ¡]object04.htm¡^¡G¡]¦Ç¦â°Ï°ì«ö¨â¤U§Y¥i«þ¨©¡^
<html>
<head>
<meta HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=big5">
</head>

<body>
<h2 align=center>¦Û­qª«¥ó¥Ü½d¡G±_ª¬¦¡ª«¥ó</h2>
<hr>

<script>
function course(inputName, inputCourseID, inputCredit) {
	this.name = inputName;
	this.courseID = inputCourseID;
	this.credit = inputCredit;
	this.display = displayCourse;
}

function displayCourse() {
	var outStr="¦WºÙ = "+this.name+"\n";
	outStr = outStr + "½Ò¸¹ = "+this.courseID+"\n";
	outStr = outStr + "¾Ç¤À = "+this.credit+"\n";
	alert(outStr);
}

function student(inputName, inputStudentID, inputAge, inputCourse) {
	this.name = inputName;
	this.studentID = inputStudentID;
	this.age = inputAge;
	this.course = inputCourse;
	this.display = displayStudent;
}

function displayStudent() {
	var outStr="¤j¦W = "+this.name+"\n";
	outStr = outStr + "¾Ç¸¹ = "+this.studentID+"\n";
	outStr = outStr + "¦~ÄÖ = "+this.age+"\n";
	outStr = outStr + "½Òµ{ = "+this.course.name+"\n";
	alert(outStr);
}

course1 = new course("Web µ{¦¡³]­p¡B§Þ³N»PÀ³¥Î","CS3431",3);
course2 = new course("­µ°T³B²z»P¿ëÃÑ","CS5770",3);
course3 = new course("Â÷´²¼Æ¾Ç","CS3111",2);
student1 = new student("Alex", 695326, 23, course1);
student2 = new student("Joey", 998735, 20, course2);
student3 = new student("Kelvin", 978732, 22, course1);
</script>

«ö¶s¥HÅã¥Ü½Òµ{©Î¾Ç¥Í¸ê°T¡G
<form>
½Òµ{¡G
<input type=button value=course1 onClick="javascript:course1.display()">
<input type=button value=course2 onClick="javascript:course2.display()">
<input type=button value=course3 onClick="javascript:course3.display()">
<br>
¾Ç¥Í¡G
<input type=button value=student1 onClick="javascript:student1.display()">
<input type=button value=student2 onClick="javascript:student2.display()">
<input type=button value=student3 onClick="javascript:student3.display()">
</form>

<hr>
</body>
</html>

¨ä¤¤§Ú­Ì¨Ï¥Î course() ©M student() ¨Ó«Øºc¡u½Òµ{¡v©M¡u¾Ç¥Í¡vªºª«¥ó¡A¦Ó¡u¾Ç¥Í¡vª«¥ó¤¤ªº course ©Ê½è¡A«h¬O«ü¦V¥Ñ course() ©Ò²£¥Íªº¡u½Òµ{¡vª«¥ó¡C

·íª«¥óªº­Ó¼Æ¸û¦h®É¡A§Ú­Ì³q±`¬O±N¨C¤@­Óª«¥ó©ñ¦b°}¦C¤¤¡A¥H«K¦s¨ú»PºÞ²z¡C¦b¤U¦Cªº½d¨Ò¤¤¡A§Ú­Ì¥H°}¦C¨Ó¦s©ñ¨C­Ó¤ëªº¶}¤ä¦Cªí¡A¦Ó¨C¤@µ§¸g¶O¥»¨­´N¬O¤@­Óª«¥ó¡A¥]§t¦¹¸g¶Oªºª÷ÃB¡B»¡©úµ¥¡A¦]¦¹¡A§Ú­Ì¥i¥H«Ü¤è«K¦a¥[¤J¤@µ§¶}¾P°O¿ý¡A¨Ã¦C¦L¥X¾ãÅé¤ä¥Xªí¡A½d¨Ò¦p¤U¡G

Example¡]expenseTable.htm¡^¡G

¤W­z½d¨Òªº­ì©lÀɦp¤U¡G

­ì©lÀÉ¡]expenseTable.htm¡^¡G¡]¦Ç¦â°Ï°ì«ö¨â¤U§Y¥i«þ¨©¡^
<html>
<head>
<meta HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=big5">
</head>

<body>
<h2 align=center>¦Û­qª«¥ó¥Ü½d¡G¥H°}¦C¨Ó¦s©ñ¤ä¥Xªí</h2>
<hr>

<script>
function expenseItem(expense, timeUnit, multiply, comment) {
	this.expense = expense;
	this.timeUnit=timeUnit;
	this.multiply = multiply;
	this.comment = comment;
}
// ¦C¥X¨C¤@¶µ¤ä¥X¦W¥Ø
expense = new Array();
i=0;
expense[i++]=new expenseItem( 200, "¨C¤Ñ", 365/12, "À\¶O");
expense[i++]=new expenseItem(3000, "¨C¤ë", 1, "©Ð¯²");
expense[i++]=new expenseItem(1000, "¨C¤ë", 1, "¹q¶O¡Ï¥Ë´µ¡Ï¤ô¶O¡Ï¹q¸Ü");
expense[i++]=new expenseItem( 500, "¨C¶g", 365/12/7, "Áʪ«¤Î¨ä¥LÂø¶O");
expense[i++]=new expenseItem( 300, "¨C¶g", 365/12/7, "¥æ³q¶O");
// ¦C¦L¤ä¥Xªí
document.writeln("<table align=center border=1>")
document.writeln("<tr><th>»¡©ú<th>³æ»ù<th>®É¶¡³æ¦ì<th>­¼¼Æ<th>¨C¤ë¤p­p")
total=0;
for (i=0; i<expense.length; i++){
	document.writeln("<tr>");
	document.writeln("<td align=center>"+expense[i].comment);
	document.writeln("<td align=right>"+expense[i].expense);
	document.writeln("<td align=center>"+expense[i].timeUnit);
	document.writeln("<td align=right>"+expense[i].multiply);
	document.writeln("<td align=right>"+Math.round(expense[i].expense*expense[i].multiply));
	total=total+expense[i].expense*expense[i].multiply;
}
document.writeln("<tr><td colspan=4>&nbsp;<td align=right><b>¨C¤ëÁ`­p</b>¡G"+Math.round(total));
document.writeln("</table>")
</script>

<hr>
</body>
</html>


JavaScript µ{¦¡³]­p»PÀ³¥Î¡G¥Î©óºô­¶¥Î¤áºÝ