情報学部 | 菅沼ホーム | 目次 | 索引 |
<SCRIPT TYPE="text/javascript"> <!-- ここに,JavaScript のプログラム //--> </SCRIPT>
使用例1( use1.htm )
01 <!DOCTYPE HTML> 02 <HTML> 03 <HEAD> 04 <TITLE>文書内記述</TITLE> 05 <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8"> 06 <META NAME=viewport CONTENT="width=device-width, initial-scale=1"> 07 <LINK REL="stylesheet" TYPE="text/css" HREF="../../master.css"> 08 </HEAD> 09 <BODY CLASS="white"> 10 <H1 CLASS="center">文書内記述</H1> 11 <SCRIPT TYPE="text/javascript"> 12 document.write("JavaScript によって出力<BR>\n"); 13 alert("文書内記述"); 14 let w = window.open("", "", "width=300, height=100"); 15 w.document.open(); 16 w.document.write('<HTML>\n'); 17 w.document.write(' <HEAD>\n'); 18 w.document.write(' <TITLE>新しい Window</TITLE>\n'); 19 w.document.write(' </HEAD>\n'); 20 w.document.write(' <BODY>\n'); 21 w.document.write(' 新しい Window の生成も可能<BR>\n'); 22 w.document.write(' </BODY>\n'); 23 w.document.write('</HTML>\n'); 24 w.document.close(); 25 </SCRIPT> 26 </BODY> 27 </HTML>
使用例2( use2.htm )
01 <!DOCTYPE HTML> 02 <HTML> 03 <HEAD> 04 <TITLE>文書内記述(関数)</TITLE> 05 <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8"> 06 <META NAME=viewport CONTENT="width=device-width, initial-scale=1"> 07 <LINK REL="stylesheet" TYPE="text/css" HREF="../../master.css"> 08 <SCRIPT TYPE="text/javascript"> 09 function func() 10 { 11 alert("文書内記述(関数)"); 12 } 13 </SCRIPT> 14 </HEAD> 15 <BODY CLASS="white"> 16 <H1 CLASS="center">文書内記述(関数)(<SPAN onClick="func()">ここをクリック</SPAN>)</H1> 17 </BODY> 18 </HTML>
01 <!DOCTYPE HTML> 02 <HTML> 03 <HEAD> 04 <TITLE>外部ファイル</TITLE> 05 <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8"> 06 <META NAME=viewport CONTENT="width=device-width, initial-scale=1"> 07 <LINK REL="stylesheet" TYPE="text/css" HREF="../../master.css"> 08 <SCRIPT TYPE="text/javascript" SRC="control.js"></SCRIPT> 09 </HEAD> 10 <BODY CLASS="white"> 11 <H1 CLASS="center">外部ファイル(<SPAN onClick="func()">ここをクリック</SPAN>)</H1> 12 </BODY> 13 </HTML>
function func() { alert("外部ファイル"); }
01 <!DOCTYPE HTML> 02 <HTML> 03 <HEAD> 04 <TITLE>要素内記述</TITLE> 05 <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8"> 06 <META NAME=viewport CONTENT="width=device-width, initial-scale=1"> 07 <LINK REL="stylesheet" TYPE="text/css" HREF="../../master.css"> 08 </HEAD> 09 <BODY CLASS="white"> 10 <H1 CLASS="center">要素内記述</H1> 11 SPAN 要素 <SPAN onClick="JavaScript: alert('alert 1');alert('alert 2')">ここをクリック</SPAN><BR><BR> 12 A 要素 <A HREF="JavaScript: alert('alert 2');alert('alert 1')">ここをクリック</A> 13 </BODY> 14 </HTML>
let x1 = 12345; let x2; var y1 = 12.5; var y1; z1 = 12; z1;
±1.7976931348623157 × 10308
-253(-9,007,199,254,740,992) ~ 253(9,007,199,254,740,992)
let x = "<SPAN STYLE='red'>赤</SPAN>"
+ : 加算 : どちらかが文字列の場合は,文字列の結合 - : 減算 * : 乗算 / : 除算 : 整数同士の割り算であっても,小数点以下が切り捨てられません. % : 余り : 被除数,除数は共に制限はありません.除算の結果を整数として,その余りを結果とします. 例えば,7.3 % 2.3 の結果は 0.4 となります( 7.3 / 2.3 の演算結果は,3 余り 0.4 ). = : 代入 ++ : インクリメント演算子( 1 だけ増加) -- : デクリメント演算子( 1 だけ減少)
> より大きい a > b 式 a の値が式 b の値より大きいとき真 < より小さい a < b 式 a の値が式 b の値より小さいとき真 >= 以上 a >= b 式 a の値が式 b の値以上のとき真 <= 以下 a <= b 式 a の値が式 b の値以下のとき真 == 等しい a == b 式 a の値と式 b の値が等しいとき真 === 等しい a === b 式 a の値と式 b の値が等しいとき真(型の変更を行わない.例えば,「 true == 1 」は真となるが,「 true === 1 」は偽となる) != 等しくない a != b 式 a の値と式 b の値が等しくないとき真 !== 等しくない a !== b 式 a の値と式 b の値が等しくないとき真(型の変更を行わない.例えば,「 true == 1 」は真となるが,「 true === 1 」は偽となる) || 論理和 x || y 式 x が真か,または,式 y が真のとき真 && 論理積 x && y 式 x が真で,かつ,式 y が真のとき真 ! 否定 ! x 式 x が偽のとき真
| 論理和 x | y 対応するビットのいずれかが 1 のとき真. & 論理積 x & y 対応するビットの双方が 1 のとき真 ^ 排他的論理和 x ^ y 対応するビットが異なるのとき真 ~ 1の補数 ~ x ビット毎に 1 と 0 を反転する << 左にシフト x << 3 3 ビット左にシフト.x を 23 倍することに相当. >> 右にシフト x >> 3 3 ビット右にシフト.x を 23 で割ることに相当. >>> 右にシフト x >>> 3 3 ビット右にシフト( C++ における符号無しの整数を右シフトする場合に相当).
new let obj = new Date() オブジェクトの生成 delete delete obj オブジェクトの削除(配列の要素も可能) 例 delete a[2]; delete['xyz']; // 連想配列 typeof() typeof(x) 変数などの型 in 数値 in obj オブジェクト内に指定した値が含まれていれば真 例 let a = new Array(1,2,3); document.write(5 in a);
if (論理式) { 文1(複数の文も可) } else { 文2(複数の文も可) }
if (論理式) { 文1(複数の文も可) } else if (論理式) { 文2(複数の文も可) } ・・・ else { 文n(複数の文も可) }
switch (式) { [case 定数式1 :] [文1] [case 定数式2 :] [文2] ・・・・・ [default :] [文n] }
for (初期設定; 繰り返し条件; 後処理) {
文(複数の文も可)
}
・・・
while (繰り返し条件) {
文(複数の文も可)
}
do { 文(複数の文も可) } while (繰り返し条件) ;
for (変数名 in オブジェクト名) { 文(複数の文も可) }
let x1 = new Array(); // 要素数は未定 let x2 = new Array(100); // 要素数が100の配列 let x3 = new Array(1, 2.3, "abc"); // 初期設定も実施 let x4 = [1, 2.3, "abc"]; // 上と同様
let v1 = new Array(2); v1[0] = new Array(10, 20, 30); v1[1] = new Array(40, 50, 60);
let color = {'red' : '赤', 'blue' : '青'}; let color = {red : '赤', blue : '青'}; // 上と同様
let color = new Array(); color['red'] = '赤'; color['blue'] = '青';
function 関数名 (引数, ・・・) { 処理 }
01 <!DOCTYPE HTML> 02 <HTML> 03 <HEAD> 04 <TITLE>関数(様々な引数)</TITLE> 05 <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8"> 06 <META NAME=viewport CONTENT="width=device-width, initial-scale=1"> 07 <LINK REL="stylesheet" TYPE="text/css" HREF="../../master.css"> 08 <SCRIPT TYPE="text/javascript"> 09 // クラス Complex 10 class Complex { 11 // コンストラクタ 12 constructor(a, b) 13 { 14 this.x = a; 15 this.y = b; 16 } 17 } 18 // 関数 func 19 function func(a, b, c, d, e = 5) 20 { 21 d.x = -100; 22 a += 10; 23 c[0] = 30; 24 return (a + b + e); // 計算結果を返す 25 } 26 </SCRIPT> 27 </HEAD> 28 <BODY CLASS="white"> 29 <H1 CLASS="center">関数(様々な引数)</H1> 30 <SCRIPT TYPE="text/javascript"> 31 let x = 1; 32 let y = 2; 33 let z = new Array(10, 20); 34 let w = new Complex(100, 200); 35 document.write("関数を呼ぶ前:<BR>\n"); 36 document.write(" x:" + x + " y:" + y + " z:" + z[0] + "," + z[1] + " w.x:" + w.x + "<BR>\n"); 37 let r = func(x, y, z, w); 38 document.write("関数を呼んだ後:<BR>\n"); 39 document.write(" x:" + x + " y:" + y + " z:" + z[0] + "," + z[1] + " w.x:" + w.x + " r:" + r + "<BR>\n"); 40 </SCRIPT> 41 </BODY> 42 </HTML>
01 <!DOCTYPE HTML> 02 <HTML> 03 <HEAD> 04 <TITLE>関数(関数名)</TITLE> 05 <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8"> 06 <META NAME=viewport CONTENT="width=device-width, initial-scale=1"> 07 </HEAD> 08 <BODY> 09 <SCRIPT TYPE="text/javascript"> 10 function add(s1, s2) { 11 let s = s1 + s2; 12 return s; 13 } 14 15 function sub(s1, s2) { 16 let s = s1 - s2; 17 return s; 18 } 19 20 function add_sub(fun, s1, s2) { 21 let s = fun(s1, s2); 22 return s; 23 } 24 25 document.write("add(2,3) " + add(2,3) + "<BR>\n"); 26 27 let kasan = add; 28 document.write("kasan(2,3) " + kasan(2,3) + "<BR>\n"); 29 30 document.write("add_sub(add, 2, 3) " + add_sub(add, 2, 3) + "<BR>\n"); 31 document.write("add_sub(sub, 2, 3) " + add_sub(sub, 2, 3) + "<BR>\n"); 32 </SCRIPT> 33 </BODY> 34 </HTML>
01 <!DOCTYPE HTML> 02 <HTML> 03 <HEAD> 04 <TITLE>オブジェクト</TITLE> 05 <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8"> 06 <META NAME=viewport CONTENT="width=device-width, initial-scale=1"> 07 <LINK REL="stylesheet" TYPE="text/css" HREF="../../master.css"> 08 <SCRIPT TYPE="text/javascript"> 09 // Complex オブジェクト(プロパティ) 10 function Complex(a, b) 11 { 12 this.x = a; 13 this.y = b; 14 this.r = this.rep(); 15 } 16 // Complex オブジェクト(メソッド add ) 17 Complex.prototype.add = function(b) 18 { 19 let cp = new Complex(this.x + b.x, this.y + b.y); 20 return cp; 21 } 22 // Complex オブジェクト(メソッド rep ) 23 Complex.prototype.rep = function() 24 { 25 let r = "(" + this.x + " , " + this.y + ")"; 26 return r; 27 } 28 </SCRIPT> 29 </HEAD> 30 <BODY CLASS="white"> 31 <H1 CLASS="center">新規オブジェクトの定義と利用</H1> 32 <SCRIPT TYPE="text/javascript"> 33 let cp1 = new Complex(1, 2); 34 let cp2 = new Complex(3, 1); 35 let cpa = cp1.add(cp2); // cp2.add(cp1) でも同じ 36 document.write("cp1 + cp2 = (" + cpa.x + " , " + cpa.y + ")<BR>\n"); 37 document.write(cp1.r + " + " + cp2.r + " = " + cpa.r + "<BR>\n"); 38 </SCRIPT> 39 </BODY> 40 </HTML>
01 <!DOCTYPE HTML> 02 <HTML> 03 <HEAD> 04 <TITLE>クラス</TITLE> 05 <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8"> 06 <META NAME=viewport CONTENT="width=device-width, initial-scale=1"> 07 <LINK REL="stylesheet" TYPE="text/css" HREF="../../master.css"> 08 <SCRIPT TYPE="text/javascript"> 09 // クラス Complex 10 class Complex { 11 static name = "Complex Number"; 12 #y = 0; 13 // コンストラクタ 14 constructor(a, b) 15 { 16 this.x = a; 17 this.#y = b; 18 this.r = this.rep(); 19 } 20 // メソッド add 21 add = function(b) 22 { 23 let cp = new Complex(this.x + b.x, this.#y + b.#y); 24 return cp; 25 } 26 // メソッド sub 27 static sub = function(a, b) 28 // static sub = function(b) 29 { 30 let cp = new Complex(a.x - b.x, a.#y - b.#y); 31 // alert("name: " + this.name + " x: " + this.x); // x に対しては,undefined 32 // let cp = new Complex(this.x - b.x, this.#y - b.#y); 33 return cp; 34 } 35 // メソッド rep 36 rep = function() 37 { 38 let r = "(" + this.x + " , " + this.#y + ")"; 39 return r; 40 } 41 } 42 // クラス Real 43 class Real extends Complex { 44 static name = "Real Number"; 45 // コンストラクタ 46 constructor(a) 47 { 48 super(a, 0); 49 this.r = this.rep(); 50 } 51 // メソッド rep 52 rep = function() 53 { 54 return this.x; 55 } 56 } 57 </SCRIPT> 58 </HEAD> 59 <BODY CLASS="white"> 60 <H1 CLASS="center">クラスの定義と利用</H1> 61 <SCRIPT TYPE="text/javascript"> 62 // Complex 63 document.write(" ***" + Complex.name + "***<BR>\n"); 64 let cp1 = new Complex(1, 2); 65 let cp2 = new Complex(3, 1); 66 let cpa = cp1.add(cp2); // cp2.add(cp1) でも同じ 67 let cps = Complex.sub(cp1, cp2); 68 // document.write("cp1 + cp2 = (" + cpa.x + " , " + cpa.#y + ")<BR>\n"); // エラー 69 document.write(cp1.r + " + " + cp2.r + " = " + cpa.r + "<BR>\n"); 70 document.write(cp1.r + " - " + cp2.r + " = " + cps.r + "<BR>\n"); 71 // Real 72 document.write(" ***" + Real.name + "***(Complex.name: " + Complex.name + ")<BR>\n"); 73 let re1 = new Real(10); 74 let re2 = new Real(20); 75 let rea = re1.add(re2); // re2.add(re1) でも同じ 76 let res = Real.sub(re1, re2); 77 document.write(re1.r + " + " + re2.r + " = " + rea.x + "<BR>\n"); 78 document.write(re1.r + " - " + re2.r + " = " + res.x + "<BR>\n"); 79 </SCRIPT> 80 </BODY> 81 </HTML>
01 <!DOCTYPE HTML> 02 <HTML> 03 <HEAD> 04 <TITLE>変数の有効範囲(スコープ)</TITLE> 05 <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8"> 06 <META NAME=viewport CONTENT="width=device-width, initial-scale=1"> 07 <SCRIPT TYPE="text/javascript"> 08 /****************************/ 09 /* 変数の有効範囲(スコープ) */ 10 /* coded by Y.Suganuma */ 11 /****************************/ 12 13 str = ""; 14 z = 30; 15 16 /************************/ 17 /* オブジェクト Example */ 18 /************************/ 19 function Example() { // class Example { 20 this.x = 1000; // constructor() { this.x = 1000; } 21 } 22 23 Example.prototype.sub = function() { // sub = function() { 24 str += "sub member( x ) " + this.x + "\n"; 25 } 26 27 /************/ 28 /* 関数 run */ 29 /************/ 30 function run() { 31 // ブロック 32 let x = 10; 33 var a = 100; 34 if (x > 5) { 35 // str += "then block x " + x + "\n"; // 許されない 36 str += "then block a " + a + "\n"; 37 let x = 15; 38 if (x > 7) { 39 let x = 20; // OK 40 str += "then block block x " + x + "\n"; 41 } 42 var a = 200; 43 let b = -100; 44 var y = 20; 45 str += "then block x " + x + "\n"; 46 str += "then block a " + a + "\n"; 47 str += "then block b " + b + "\n"; 48 str += "then block y " + y + "\n"; 49 } 50 else { 51 str += "else block x " + x + "\n"; 52 str += "else block a " + a + "\n"; 53 x = -15; 54 str += "else block x " + x + "\n"; 55 } 56 // let x = 100; // 許されない 57 // var a = 300; // 許される 58 // str += "w " + w + "\n"; // 許されない 59 sub(); 60 str += "w " + w + "\n"; // グローバル変数 61 str += "x " + x + "\n"; 62 str += "a " + a + "\n"; 63 // str += "b " + b + "\n"; // 許されない 64 str += "y " + y + "\n"; // ブロック内の定義が有効 65 // 最初の x が 1 の時は undefined 66 // オブジェクト 67 let ex = new Example(); 68 ex.sub(); 69 str += "member( x ) " + ex.x + "\n"; 70 // 71 // 結果の設定 72 // 73 document.getElementById("tx").value = str; 74 } 75 76 /************/ 77 /* 関数 sub */ 78 /************/ 79 function sub() 80 { 81 // str += " sub x " + x + "\n"; // 許されない 82 let x = 40; 83 str += " sub x " + x + "\n"; 84 str += " sub z " + z + "\n"; // グローバル変数 85 w = 50; 86 } 87 </SCRIPT> 88 </HEAD> 89 <BODY STYLE="font-size:130%"> 90 <P STYLE="text-align:center"> 91 <INPUT TYPE="button" VALUE="OK" onClick="run()" STYLE="font-size:90%"><BR><BR> 92 <TEXTAREA TYPE="text" ID="tx" COLS="30" ROWS="10" STYLE="font-size: 100%"></TEXTAREA> 93 </P> 94 </BODY> 95 </HTML>
01 x = 10; 02 function run() { 03 alert(x); // undefined 04 var x = 20; 05 alert(x); 06 var x = 30; 07 alert(x); 08 // let x = 40; // 定義済みエラー 09 ・・・・・ 10 }
01 x = 10; 02 function run() { 03 // alert(x); // 未定義エラー 04 let x = 20; 05 alert(x); 06 // let x = 30; // 定義済みエラー 07 // var x = 30; // 定義済みエラー 08 }
01 x = 10; 02 function run() { 03 alert(x); 04 x = 20; 05 alert(x); 06 }
// 32 行目の x が 10 のとき 35 then block a 100 39 then block block x 20 44 then block x 15 45 then block a 200 46 then block b -100 47 then block y 20 82 sub x 40 83 sub z 30 59 w 50 60 x 10 61 a 200 63 y 20 // 32 行目の x が 1 のとき 50 else block x 1 51 else block a 100 53 else block x -15 82 sub x 40 83 sub z 30 59 w 50 60 x -15 61 a 100 63 y undefined
sub member( x ) 1000 member( x ) 1000
情報学部 | 菅沼ホーム | 目次 | 索引 |