お知らせ
- Twitter(一時的に鍵無しへ) -> https://twitter.com/monatannzunzun
- 基本的に公開しているMODはバグがある旧バージョンです。Twitterでのみ最新版を配布します
- Ctrl+Fを押すと文字検索できます
サイトトップ
解説メニュー
JavaScript系解説
トップページ > プログラミング解説トップ > JavaScript解説
JavaScriptとは
- 略称 js
- webサイトで使われる言語
- jQuery等のライブラリを使用可能
- イベント(ボタンクリックで動作)等を実現可能
JS基礎
HTMLへの読み込み
- index.html
<!--外部JS読み込み-->
<script src="output.js"></script>
<!--HTML内記述-->
<script>console.log("HTML内のjsです");</script>
console.log("HTML外のjsです");
HTML外のjsです
HTML内のjsです
コメントアウト
動作をしない行を作ることでコード説明など書ける//1行コメントアウト
/*
複数段コメントアウト
*/
log出力
ブラウザでF12押すと出てくるデバック用の奴- js
console.log("ログ出力したい内容");
ログ出力したい内容
変数定義
- js
//outputValueの変数を作り文字testを代入
var outputValue = "test";
console.log(outputValue);
//outputValueに数字0を代入
outputValue = 0;
console.log(outputValue);
test
0
四則演算
- js
var num;
// 数字+数字 1+1=2
var num1 = 1 + 1;
console.log('1+1=' + num1);
// 文字+文字 "1" + "1" -> "11"
num1 = "1" + "1";
console.log('1+1=' + num1);
//数字+文字->文字 11 + "2" -> "112"
num1 = 11;
var num2 = "2";
console.log('11+2=' + num1 + num2);
//数字+文字->数字 11 + "2" = 13
num = num1 + parseInt(num2);
console.log('11+2=' + num);
//数字-数字 6-3=3
num1 = 6;
num2 = 3;
num = num1 - num2;
console.log('6-3='+num);
//数字×数字 6×3=18
num = num1 * num2;
console.log('6*3='+num);
//数字÷数字 6/3=2
num = num1 / num2;
console.log('6/3='+num);
//数字÷数字の余り 14/4=3余り2
num1 = 14;
num2 = 4;
num = num1 % num2;
console.log('14%4='+num);
2
1+1=11
11+2=112
11+2=13
6-3=3
6*3=18
6/3=2
14%4=2
要素取得・書き換え
- index.html
<html>
<head>
<script src="output.js"></script>
</head>
<body>
<div id="div1">
<div class="divs">div1_1です</div>
<div class="divs">div1_2です</div>
<div class="divs">div1_3です</div>
<div name="divname">div1_4です</div>
</div>
</body>
<html>
var html;
// HTMLのid名 div1 のHTML
html = document.getElementById('div1').innerHTML;
console.log('div1のhtml : ' + html);
// HTMLのclass名 divs のHTML
// 1番目のclass divs
html = document.getElementsByClassName('divs')[0].innerHTML;
console.log('1番目のdivs: ' + html);
// 2番目のclass divsのhtmlを変える
document.getElementsByClassName('divs')[1].innerHTML = "<div class='divs_changed'>div1_2変更しました</div>";
// 最初から4番目のtag名 div のHTML
document.getElementsByTagName('div')[4].innerText = 'div1_3変更しました';
// name名 divname のHTML
html = document.getElementsByName('divname')[0].innerHTML;
console.log('1番目のdivname: ' + html);
div1のhtml : <div id="div1"><div class="divs">div1_1です</div><div class="divs">div1_2です</div><div class="divs">div1_3です</div><div name="divname">div1_4です</div></div>
1番目のdivs: <div class="divs">div1_1です</div>
1番目のdivname: <div name="divname">div1_4です</div>
<html>
<head>
<script src="output.js"></script>
</head>
<body>
<div id="div1">
<div class="divs">div1_1です</div>
<div class="divs_changed">div1_2変更しました</div>
<div class="divs">div1_3変更しました</div>
<div name="divname">div1_4です</div>
</div>
</body>
<html>
指定した要素の | 語尾に追加するもの |
親要素(1つ上のグループ) | .parentNode |
子要素(1つ下のグループ) | .childNodes |
最初の子要素(HTML見た時に一番上にあるもの) | .firstChild |
最後の子要素(HTML見た時に一番下にあるもの) | .lastChild |
前の要素(同じグループで手前にあるもの) | .previousSibling |
次の要素(同じグループで後ろにあるもの) | .nextSibling |
var html;
// id名 div1 の上の要素のHTML
html = document.getElementById('div1').parentNode.innerHTML;
console.log('div1の上の要素 : ' + html);
// id名 div1 の下の2番目の要素のHTML
html = document.getElementById('div1').childNodes[1].innerHTML;
console.log('div1の下の2番目の要素: ' + html);
// id名 div1 の下の最初の要素のHTML
html = document.getElementById('div1').firstChild.innerHTML;
console.log('div1の下の最初の要素 : ' + html);
// id名 div1 の下の最後の要素のHTML
html = document.getElementById('div1').lastChild.innerHTML;
console.log('div1の下の最後の要素 : ' + html);
// id名 div1 の下の最後の要素の前のHTML
html = document.getElementById('div1').lastChild.previousSibling.innerHTML;
console.log('div1の下の最後の要素の前の要素 : ' + html);
// id名 div1 の下の最初の要素の後のHTML
html = document.getElementById('div1').firstChild.nextSibling.innerHTML;
console.log('div1の下の最初の要素の後の要素 : ' + html);
div1の上の要素 : <body><div id="div1"><div class="divs">div1_1です</div><div class="divs_changed">div1_2変更しました</div><div class="divs">div1_3変更しました</div><div name="divname">div1_4です</div></div></body>
div1の下の2番目の要素: <div class="divs_changed">div1_2変更しました</div>
div1の下の最初の要素 : <div class="divs">div1_1です</div>
div1の下の最後の要素 : <div name="divname">div1_4です</div>
div1の下の最後の要素の前の要素 : <div class="divs">div1_3変更しました</div>
div1の下の最初の要素の後の要素 : <div class="divs_changed">div1_2変更しました</div>
要素追加/削除
- js
var html = document.getElementById("div1");
//追加要素 この場合は<div></div>
var appendDiv = document.createElement("div");
//id名 div1の下の後ろに要素を追加
appendDiv.innerHTML = "appendChild追加";
html.appendChild('<li>appendChild追加</li><li class="removeTest">remove用要素</li>');
//id名 div1の下の前に要素を追加
appendDiv.innerHTML = "insertBefore追加";
html.insertBefore(appendDiv);
//2つのclass名 removeTestの要素を削除
document.getElementsByClassName("removeTest")[1].remove();
<html>
<head>
<script src="output.js"></script>
</head>
<body>
<div id="div1">
<div><li>insertBefore追加</li><li class="removeTest">remove用要素</li></div>
<div class="divs">div1_1です</div>
<div class="divs_changed">div1_2変更しました</div>
<div class="divs">div1_3変更しました</div>
<div name="divname">div1_4です</div>
<div><li>appendChild追加</li></div>
</div>
</body>
<html>
CSS関係
- js
//id名 div1の要素取得
var html = document.getElementById("div1");
//取得した要素のstyle->colorの値を変更
html.style.color = "orange";
//取得した要素のstyle->font-sizeの値を変更
html.style.fontSize = "20px";
//取得した要素のfont-sizeの値を出力
console.log(html.style.fontSize);
20px
日時関係
- js
//アクセス時間を2018年7月19日(木) 17時15分20秒とする
//2018年7月19日 17時15分20秒
var dt = new Date();
console.log("日時 : " + dt);
// 2018
var year = dt.getFullYear();
console.log("年 : " + year);
// 7
var month = dt.getMonth()+1;
console.log("月 : " + month);
// 19
var date = dt.getDate();
console.log("日 : " + date);
// 4
var day = dt.getDay();
console.log("曜日(数字) : " + day);
/*※ 曜日まで出したい場合は以下のように記述(上は書かない)
日=0,月=1・・という配列になっており[番号]でその値を取得できる
*/
//配列定義
var dateT = ["日","月","火","水","木","金","土"];
//配列の4個目(=木)を取得
day = dateT[dt.getDay()];
console.log("曜日 : " + day);
// 17
var hours = dt.getHours();
console.log("時 : " + hours);
// 15
var minutes = dt.getMinutes();
console.log("分 : " + minutes);
// 20
var seconds = dt.getSeconds();
console.log("秒 : " + seconds);
日時 : Thu Jul 19 07 2018 17:15:20 GMT+0900 (日本標準時)
年 : 2018
月 : 7
日 : 19
曜日(数字) : 4
曜日 : 火
時 : 17
分 : 15
秒 : 20
URL取得
- js
//開いているページを https://monatann.azurewebsites.net/index.html?name=kiritann#youとする。
// https://monatann.azurewebsites.net/index.html?name=kiritann#you
var url = location.href;
console.log("URL : " + url);
// monatann.azurewebsites.net
var host = location.host;
console.log("Host : " + host);
// /index.html
var path = location.pathname;
console.log("Path : " + path);
// ?name=kiritann
var paramater = location.search;
console.log("Paramater : " + paramater);
// #you
var anchor = location.hash;
console.log("Anchor : " + anchor);
// https
var protocol = location.protocol;
console.log("Protocol : " + protocol);
URL : https://monatann.azurewebsites.net/index.html?name=kiritann#you
Host : monatann.azurewebsites.net
Path : /index.html
Parameter : ?name=kiritann
Anchor : #You
Protocol : https
文字列処理
- js
var text = "0123456789";
//① 始点と終点の位置で抜き出し 後ろの位置の省略可能
// 56789
var after = text.slice(5);
// -が付くと後ろから
// 789
after = text.slice(-3);
// 567
after = text.slice(5, 8);
after = text.slice(5, -2);
//② 始点とそこからの文字列の長さで抜き出し 後ろの位置の省略可能
// 3456789
after = text.substr(3);
// 5678
after = text.substr(5, 4);
after = text.substr(-5, 4);
//③ 開始の地点と、終了の地点の位置で抜き出し
//sliceとの違いは、
//・終了地点の省略不可
//・開始地点>終了地点の時、(終了地点, 開始地点)になる。
// 1234
after = text.substring(5, 1);
//④ 文字数取得
// 10
var num = text.length;
//⑤ 特定の文字の場所を探す
// ない場合-1 一つ見つけると終了
// 5
var num = text.indexOf('567');
// -1
num = text.indexOf('567', 8);
//⑥ 置換
//元の文字
text = "キリタンカワイイヤッター";
//置換
var text2 = text.replace("キリタン","アカネチャン");
//アカネチャンカワイイヤッター
console.log(text2);
アカネチャンカワイイヤッター