概要
ドットインストールでJavaScriptについてやってみた
http://dotinstall.com/lessons/basic_javascript_v2
特徴
ブラウウザに実装されているスクリプト言語
かいてみる
hello world
root@www27032ue:/var/www/htdocs/study# cat index.html
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>JavaScriptの練習</title>
</head>
<body>
<script>
// コメント
console.log("hello world!");
</script>
</body>
</html>
変数
root@www27032ue:/var/www/htdocs/study# cat index.html
### 以下ヘッダは省略する ###
<body>
<script>
/*
変数
- 文字列
- 数値
- 真偽値
- オブジェクト
- 配列・関数・組み込みオブジェクト
- undefined 定義されていない
- null 何もない
*/
// var msg = "hello world!" という書き方も可能
// "(ダブルクオーテーション)でも'(シングルクオーテーション)でも違いはない
// 改行は\nを利用する
var msg;
msg = "hello world!";
console.log(msg);
</script>
</body>
数値計算
root@www27032ue:/var/www/htdocs/study# cat index.html
<body>
<script>
var x;
x = 10 * 2;
x = 10 % 3;
console.log(x);
</script>
</body>
条件分岐
root@www27032ue:/var/www/htdocs/study# cat index.html
<body>
<script>
var score = 55;
if (score > 60){
console.log("OK");
} else if (score > 40){
console.log("soso...");
} else {
console.log("NG");
}
</script>
</body>
真偽値
if (x) {
}
### xが文字列の場合、上は以下と同義 ###
if (x !== ''){
}
while文
var i = 0;
while ( i < 10){
console.log(i);
i++;
}
ユーザにメッセージを表示する
// alertの表示
alert("hello");
// cancelボタンがついている
var answer = confirm("are you sure?");
console.log(answer);
// 変数を格納する
var name = prompt("what's your name?","名無し")
console.log(name);
関数
// 引数を持たせることができる
function hello(name) {
console.log("hello" + name);
}
hello("Tom");
// 返り値をもたせることもできる
function hello2(name){
return "hello" + name;
}
var greet = hello2("John");
console.log(greet);
関数その2
// 関数もデータ型であるため変数に入れることが可能
var varhello = function(name) {
var msg = "hello" + name;
return msg;
};
var greet = varhello("John");
console.log(greet);
関数その3
// 即時関数。定義して即実行する
(function hello(name) { // helloを省略することも可
console.log("hello "+name);
})("Tom");
タイマー処理
// setInterval : 一定間隔で処理を実行。前の処理が終わっているかどうかは気にしない
// setTimeout : 一定時間経つと、一度だけ処理を実行。。前の処理が完了していると実行する
var i = 0;
function show() {
console.log(i++);
}
setInterval(function(){
show();
},1000);
// 3を表示したら終了する
var i = 0;
function show() {
console.log(i++);
var tid = setTimeout(function(){
show();
},1000);
if (i > 3){
clearTimeout(tid);
}
}
show();
配列
var score = [100, 300, 500]; console.log(score[0]); console.log(score);
オブジェクト
名前と値がグループ化されている
var user = {
email: "shimizu.r.hiroaki@gmail.com",
score: 80
};
console.log(user["email"]);
console.log(user.score);
console.log(user);
var user = {
email: "shimizu.r.hiroaki@gmail.com",
score: 80,
greet: function(name) { // 関数のことをオブジェクトのメソッド。thisで自分のオブジェクトを指す
console.log("hello," + name + " from " + this.email);
}
};
user.greet("Tom");
組み込みオブジェクト
javascriptが用意しているオブジェクト
var s = new String("shimizu");
// 実は、var s = "shimizu"; でも同じことができる(文字列リテラル)
console.log(s.length);
console.log(s.replace("i","I"));
var d = new Date(2014, 1, 11, 10 ,20 ,30); console.log(d.getFullYear()); console.log(d.getMonth());
DOM
ブラウザ自身もオブジェクトであり、操作することができる
// オブジェクトのプロパティを表示 console.dir(window);
window.document – 今開いているページのこと
Javascriptで書き換えることで動的にページを変更することができる
document にアクセスするための命令をdocument object model (DOM)と呼ぶ
以下について、文字列と色を変更している
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>JavaScriptの練習</title>
</head>
<body>
<h1>見出し</h1>
<p id="msg">こんにちは</p>
<script>
var e = document.getElementById('msg');
e.textContent = 'hello!';
e.style.color = 'red';
</script>
</body>
</html>
イベント
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>JavaScriptの練習</title>
</head>
<body>
<h1>見出し</h1>
<p id="msg">こんにちは</p>
<button id="add">click</button>
<script>
document.getElementById('add').addEventListener('click',function(){
var e = document.getElementById('msg');
e.textContent = 'hello!';
e.style.color = 'red';
});
</script>
</body>
</html>
おみくじを作る
http://dotinstall.com/lessons/omikuji_js

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>おみくじ</title>
</head>
<body>
<h1>おみくじ</h1>
<input type="button" value="あなたの運勢は" onclick="getOmikuji();">
<p>あなたの運勢は...<span id="result"></span></p>
<script>
function getOmikuji(){
var omikuji = ["大吉","中吉","小吉"];
var result = Math.floor(Math.random() * omikuji.length);
document.getElementById('result').innerHTML = omikuji[result];
}
</script>
</body>
</html>
スロットマシーン
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>スロットマシーン</title>
<style>
.col{
float: left;
width: 100px;
text-align: center;
font-size: 32px;
}
</style>
</head>
<body>
<div class="col">
<span id="num0">?</span><br>
<input type="button" value="STOP" id="stop0">
</div>
<div class="col">
<span id="num1">?</span><br>
<input type="button" value="STOP" id="stop1">
</div>
<div class="col">
<span id="num2">?</span><br>
<input type="button" value="STOP" id="stop2">
</div>
<script>
(function() {
var timers,
nums,
stopCount;
document.getElementById('stop0').onclick = function() {
stopSlot(0);
};
document.getElementById('stop1').onclick = function() {
stopSlot(1);
};
document.getElementById('stop2').onclick = function() {
stopSlot(2);
};
function startSlot(){
timers = [];
nums = [];
stopCount = 0;
runSlot(0);
runSlot(1);
runSlot(2);
}
function stopSlot(n) {
// javascript 特有の書き方
if (typeof nums[n] !== 'undefined') {
return;
}
clearTimeout(timers[n]);
nums[n] = document.getElementById('num'+ n).innerHTML;
stopCount++;
if (stopCount == 3){
checkSlot();
}
}
function checkSlot() {
nums.sort();
if(nums[0] == nums[1] && nums[0] == nums[2]){
alert('すべて揃った');
}else if (nums[0] == nums[1] || nums[1] == nums[2]){
alert('2つ揃った');
}else{
alert('残念');
}
}
function runSlot(n) {
document.getElementById('num'+ n).innerHTML = Math.floor(Math.random() * 10);
timers[n] = setTimeout(function() {
runSlot(n);},50);
}
startSlot();
})();
</script>
</body>
</html>
5秒で決めろ
http://dotinstall.com/lessons/just_five_js

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>5秒で決めろ!</title>
</head>
<body>
<h1>5秒で決めろ!</h1>
<p><input type="button" value="start" onclick="start();"></p>
<p><input type="button" value="stop" onclick="stop();"></p>
<p id="result"></p>
<script>
var start;
var stop;
var FIVE_SECOND = 5 * 1000;
function start() {
start = new Date().getTime();
console.log(start);
}
function stop() {
stop = new Date().getTime();
console.log(stop);
// 差を算出
var diff = FIVE_SECOND - (stop - start);
// 結果を表示
var e = document.getElementById('result');
if (diff == 0) {
e.innerHTML= 'ぴったり';
} else if (diff > 0){
e.innerHTML = (diff / 1000) + '秒早い';
} else {
e.innerHTML = (diff / 1000) + '秒遅い';
}
}
</script>
</body>
</html>
参考URL
ドットインストール-javascript関連
http://dotinstall.com/lessons/basic_javascript_v2
https://developer.mozilla.org/ja/docs/Web/JavaScript







