概要と目標
JavaScriptから、
HTMLを操作する。
HTMLの各要素にアクセスする仕組みであるDOMの操作を学習し、
文字サイズ拡大機能を作成しよう。
HTMLの各要素にアクセスする仕組みであるDOMの操作を学習し、
文字サイズ拡大機能を作成しよう。
JavaScriptからHTML要素を操作する場合は、その要素を取得する必要がある。
基本は操作する要素にid属性を指定し、document.getElementById()メソッドで取得する。
document.getElementById() ・・・ ID属性が指定されている要素を取得するメソッドvar 変数名 = document.getElementById(id名);
要素オブジェクト
p要素にid属性を指定
<p id="msg">こんにちは</p>
<script src="app.js"></script>
id属性をJavaScriptで取得
// 要素の取得
var p = document.getElementById('msg');
| メソッド | パラメータ | 戻り値 |
|---|---|---|
getElementsByClassName() |
class名 | NodeListオブジェクト (ヒットした全要素を配列で取得) |
getElementsByTagName() |
要素名 | NodeListオブジェクト (ヒットした全要素を配列で取得) |
querySelector() |
CSSセレクタ (Ex: 「 #main h2」) |
Elementオブジェクト (最初にヒットした要素のみ取得) |
querySelectorAll() |
CSSセレクタ (Ex: 「 #main .contents」) |
NodeListオブジェクト (ヒットした全要素を配列で取得) |
document.getElementById()によって取得した要素オブジェクトには、
要素を操作するための様々なプロパティやメソッドが使える。
要素内を変更するには、innerHTMLプロパティを使う。
innerHTML ・・・ 要素内を変更するプロパティ要素オブジェクト.innerHTML = 変更する値;
// 要素の取得
var p = document.getElementById('msg');
// 内容の変更
p.innerHTML = '<em>JavaScriptで</em>置き換えだ!';
要素オブジェクトにCSSを追加することもできる。
CSSはインラインスタイルとして追加される。
style ・・・ CSSを追加するプロパティ要素オブジェクト.style.CSSのプロパティ名 = CSSの値;
プロパティ名はキャメルケースで指定する (Ex.「font-size」 → 「fontSize」)
// 要素の取得
var p = document.getElementById('msg');
// 内容の変更
p.innerHTML = '<em>JavaScriptで</em>置き換えだ!';
// スタイルの変更
p.style.color = '#cc0000';
p.style.fontSize = '1.5em';
要素オブジェクトのclassを追加したり、classを削除したり、
classを自由に切り替えることが出来る。
classList ・・・ CSSを追加したり削除したりするプロパティ// add() ・・・ クラスを追加するメソッド
要素オブジェクト.classList.add(class名);
// remove() ・・・ クラスを削除するメソッド
要素オブジェクト.classList.remove(class名);
// toggle() ・・・ クラスを自動で切り替えるメソッド( なければ追加 あれば削除 )
要素オブジェクト.classList.toggle(class名);
className ・・・ CSSを一括で設定したり取得したりするプロパティ要素オブジェクト.className = class名;
// 要素の取得
var p = document.getElementById('msg');
// 内容の変更
p.innerHTML = '<em>JavaScriptで</em>置き換えだ!';
// スタイルの変更
p.style.color = '#cc0000';
p.style.fontSize = '1.5em';
// classの操作
p.classList.add('theme-dark');
.theme-dark {
background-color: #333;
text-align: center;
padding: 1em;
}
要素オブジェクトにイベントを設定すれば、
クリックした時や、マウスを乗せた時など、
ユーザーの操作に応じて処理を発生させることが出来る。
addEventListener() ・・・ 要素にイベントを設定するメソッド要素オブジェクト.addEventListener(イベント名, function () {
// イベントが発生した時の処理
});
| イベント | 発生条件 |
|---|---|
click |
要素をクリックした時 |
dblclick |
要素をダブルクリックした時 |
mouseover |
マウスポインターが要素の上に乗った時 |
mouseout |
マウスポインターが要素の上から離れた時 |
mousemove |
マウスポインターが要素の上で動いた時 |
| イベント | 発生条件 |
|---|---|
keypress |
キーを押している間 |
keydown |
キーを押した時 |
keyup |
キーを離した時 |
| イベント | 発生条件 |
|---|---|
select |
テキストフィールドで文字が選択された時 |
change |
コントロール部品の内容が変更した時 |
focus |
コントロール部品にフォーカスが当たった時 |
blur |
コントロール部品からフォーカスが外れた時 |
submit |
送信ボタンが押された時 |
reset |
リセットボタンが押された時 |
| イベント | 発生条件 |
|---|---|
load |
ページが読み込まれた時 |
scroll |
スクロールされた時 |
resize |
サイズが変更された時 |
blur |
コントロール部品からフォーカスが外れた時 |
<p id="msg">こんにちは</p>
<button id="btn">クリックしてね</button>
<script src="app.js"></script>
// 要素の取得
var p = document.getElementById('msg');
var button = document.getElementById('btn');
// イベントの設定
button.addEventListener('click', function () {
// #btnをクリックした時
p.classList.toggle('is-active');
});
.is-active {
font-size: 1.5em;
font-weight: bold;
color: #cc0000;
}
「chapter08」 › 「training」フォルダ内の「index.html」を開き、
下記の問題を解いて下さい。
transition: all 0.3s ease-in-out;」<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>練習問題8</title>
<link rel="stylesheet" href="style.css">
</head>
<body id="top">
<h1>文字サイズ変更機能</h1>
<ul>
<li><button id="small">小</button></li>
<li><button id="medium">中</button></li>
<li><button id="large">大</button></li>
</ul>
<p>これはダミーテキスト。これはダミーテキスト。</p>
<h2>これはダミーの見出し</h2>
<p>これはダミーテキスト。これはダミーテキスト。</p>
<h2>これはダミーの見出し</h2>
<p>これはダミーテキスト。これはダミーテキスト。</p>
<script src="app.js"></script>
</body>
</html>
// 要素の取得
var body = document.getElementById('top');
var btnSmall = document.getElementById('small');
var btnMedium = document.getElementById('medium');
var btnLarge = document.getElementById('large');
// イベントの設定
btnSmall.addEventListener('click', function () {
body.className = 'small';
});
btnMedium.addEventListener('click', function () {
body.className = 'medium';
});
btnLarge.addEventListener('click', function () {
body.className = 'large';
});
body {
transition: all .3s ease-in-out;
}
.small {
font-size: .7em;
}
.medium {
font-size: 1em;
}
.large {
font-size: 1.5em;
}
解答例は全問題のチェックボックスが on になるとご覧いただけます。
JavaScriptからHTMLの各要素を操作する仕組みをDOMという。
document.getElementById()などで取得するaddEventListener()で指定