こんにちは、Ryuseiです!
今回もプログラミング学習の備忘録として、JavaScriptのDOM操作について学んだことをまとめていきます!
前回までHTMLやCSS、BEM、Bootstrapについて学んできましたが、今回はJavaScriptで「ページの要素を操作する方法」を中心に学びました。
これからのサイト作成で役立つ基本的な技術なので、しっかりと整理していこうと思います!
JavaScriptでページの要素を取得する
まずは、画面サイズを取得する方法から!
画面の幅や高さを取得するには、以下のコードを使います。
console.log(window.outerHeight); // 画面表示の高さ
console.log(window.outerWidth); // 画面表示の幅
また、要素を取得する方法としては document.getElementById
を使いました。
var button = document.getElementById("button"); // window. は省略可能
button.value = 'クリック'; // ボタンの表示テキストを変更
document
は window
の中のオブジェクトで、ページの情報を扱うときによく使います。
いかにdocument.getElementのメソッドを簡単にまとめておきます。
メソッド名 | 例 | 取得内容 | 特徴 |
---|
getElementById | document.getElementById("main") | IDに一致する要素 | 単一要素、返り値は1つ |
getElementsByTagName | document.getElementsByTagName("p") | タグ名に一致する全要素 | 複数、HTMLCollectionで返る |
getElementsByClassName | document.getElementsByClassName("hoge") | クラス名に一致する要素 | 複数、HTMLCollectionで返る |
JavaScriptで要素を作成する
次は、HTML要素を作成する方法です。
var hello = document.createElement("p"); // <p>タグを作成
var text = document.createTextNode("こんにちは"); // テキストノードを作成
document.body.appendChild(hello).appendChild(text); // ページに追加
このように、createElement
と createTextNode
を組み合わせて、新しい要素をページに追加できます。
これができると、ページに動的に要素を増やせるようになるので便利です!
JavaScriptでイベントを設定する
イベントとは、ボタンがクリックされたり、ページが読み込まれたタイミングで動作する処理のことです。
まずは基本の onClick
を使った例です。
<input type="button" id="button" value="おす" onClick="check()">
<script>
function check() {
console.log('ボタンが押されました。');
}
</script>
ただし、onClick
は一つしか設定できないので、複数の処理を登録したい場合は addEventListener
を使うのがおすすめ!
<input type="button" id="button" value="おす">
<script>
document.getElementById("button").addEventListener("click", check);
document.getElementById("button").addEventListener("click", hello);
function check() {
console.log('クリックされました。');
}
function hello() {
console.log('lolされました。');
}
</script>
このように複数のイベントを登録できるのが便利です!
上から順に処理が実行されることも理解できました。
学んだこと&感想
今回は、JavaScriptでページの要素を取得・作成・操作する方法と、イベントの基本的な扱い方を学びました。
実際にコードを書いて試してみることで、少しずつ理解が深まってきた気がします!
これからは、これらの知識を使って、自分のプロフィールサイトに動きをつけたり、インタラクションを追加していきたいです!
次回はさらにJavaScriptの応用や、CSSとの組み合わせを学んでいく予定です。
引き続き頑張っていきますので、よろしくお願いします!
-
【第1回】Next.js × Firebaseチャット構想
こんにちは、Ryuseiです! 今回は、自作のNext.jsアプリにチャット機能を組み込むための構想と、試行錯誤のプロセスを振り返ります。 開発の目的 技術構成…
-
Claude Artifactsが進化:誰でもAIアプリを構築・共有できる時代へ
こんにちは、Ryuseiです! 今回は技術の進化がもたらす新しい可能性についての話題です。2025年、Anthropicの生成AI「Claude」に革新的な新機…
-
【Dify旅行記】地元発!個人開発で作る旅行提案チャットアプリのチャットフロー設計
こんにちは。今回は、地元の魅力を発信しながら、旅行の提案をしてくれるチャットアプリをDifyで個人開発した際のチャットフロー設計についてご紹介します。ブロックの…
-
Googleが新たに発表した「A2A」(Agent2Agent)プロトコルとは?
AI時代のインフラとなるか?Googleが仕掛ける“Agent2Agent(A2A)”の衝撃 2025年4月、Googleは異なるAIエージェント同士の通信を可…