第5回HTML解説(中、上級編): JavaScriptを使ったインタラクティブなWebページ
これまでの回で、HTMLやCSSを使って静的なWebページを作る方法を学びました。今回は、JavaScriptを使ってWebページにインタラクティブな機能を追加し、より動的でユーザーとのやり取りが可能なページを作成していきます。
1. JavaScriptの基本
JavaScript(以下JS)は、Webページに動きを加えたり、ユーザーの入力に応じた処理を行うためのプログラミング言語です。HTMLやCSSと異なり、JSはブラウザで実行され、ユーザーの操作に応じた動的な変化を可能にします。
基本的な構文
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>JavaScript Example</title>
</head>
<body>
<button id="myButton">クリックしてみて</button>
<script>
document.getElementById('myButton').addEventListener('click', function() {
alert('ボタンがクリックされました!');
});
</script>
</body>
</html>
getElementById()
: HTML要素をIDで取得します。この例では、myButton
というIDを持つボタンを取得しています。addEventListener()
: ユーザーが行う操作(イベント)に反応して、指定された動作を実行します。今回はボタンがクリックされたときにアラートが表示されるように設定しています。
2. DOM操作
DOM(Document Object Model)とは、HTML文書の構造をツリー状に表現したもので、JavaScriptを使ってこのDOMを操作することで、ページの内容をリアルタイムで変更できます。
DOMの例: コンテンツを動的に追加
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>DOM操作の例</title>
</head>
<body>
<div id="content"></div>
<button id="addContentButton">コンテンツを追加</button>
<script>
document.getElementById('addContentButton').addEventListener('click', function() {
var newElement = document.createElement('p');
newElement.textContent = '新しいパラグラフが追加されました!';
document.getElementById('content').appendChild(newElement);
});
</script>
</body>
</html>
createElement()
: 新しいHTML要素を作成します。この例では、新しい<p>
タグが作成されます。appendChild()
: 作成した要素を指定した場所に追加します。
3. フォームのバリデーション
フォームの入力内容をJavaScriptでチェックすることで、ユーザーが正しい情報を入力しているかどうかを確認できます。
簡単なバリデーションの例
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>フォームのバリデーション</title>
</head>
<body>
<form id="myForm">
<label for="name">名前:</label>
<input type="text" id="name" name="name">
<button type="submit">送信</button>
</form>
<script>
document.getElementById('myForm').addEventListener('submit', function(event) {
var nameInput = document.getElementById('name');
if (nameInput.value === '') {
alert('名前を入力してください');
event.preventDefault(); // フォーム送信を停止
}
});
</script>
</body>
</html>
event.preventDefault()
: フォームが送信されるのを一時的に止め、ユーザーに警告メッセージを表示します。
4. 簡単なアニメーションの作成
JavaScriptを使って、CSSだけでは難しい複雑なアニメーションを作成することもできます。
ボックスを左右に動かすアニメーションの例
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>JavaScript Animation</title>
<style>
#box {
width: 50px;
height: 50px;
background-color: coral;
position: absolute;
left: 0;
top: 50px;
}
</style>
</head>
<body>
<div id="box"></div>
<script>
var box = document.getElementById('box');
var position = 0;
var interval = setInterval(moveBox, 10);
function moveBox() {
if (position >= 300) {
clearInterval(interval);
} else {
position++;
box.style.left = position + 'px';
}
}
</script>
</body>
</html>
setInterval()
: 一定間隔ごとに関数を実行します。この例では、moveBox
関数が毎秒100回実行され、ボックスが右に動いていきます。
5. ユーザー入力に応じたリアルタイム更新
JavaScriptを使うことで、ユーザーが入力した内容に応じて、リアルタイムでページの内容を更新することもできます。
リアルタイムのテキスト更新の例
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>リアルタイムのテキスト更新</title>
</head>
<body>
<input type="text" id="inputField" placeholder="テキストを入力してください">
<p>あなたが入力したテキスト: <span id="output"></span></p>
<script>
document.getElementById('inputField').addEventListener('input', function() {
document.getElementById('output').textContent = this.value;
});
</script>
</body>
</html>
input
イベント: ユーザーが入力フィールドに文字を入力するたびに発生し、リアルタイムで出力を更新します。
まとめ
第5回では、JavaScriptを使ってWebページにインタラクティブな機能を追加する方法を学びました。フォームのバリデーションやアニメーション、DOM操作などを用いることで、より動的でユーザーフレンドリーなWebページを作成できます。
次回は、JavaScriptのより高度なテクニックや、Ajaxを使ってサーバーと通信する方法などを学んでいきます!