JavaScriptでHTML要素を操作!属性とプロパティを使いこなす

2024-04-02

HTMLにおける属性とプロパティの違い

属性

属性は、HTML要素に情報を与えるために使用されます。要素の見た目や動作をどのように設定するかを指示します。属性は要素名と属性名の間にコロン(:)、属性値を**クォーテーション("")**で囲んで記述します。

例:

<img src="image.jpg" alt="これは画像です" width="200" height="100">

上記の例では、img要素に以下の属性が設定されています。

  • src: 画像ファイルのパス
  • alt: 画像の説明
  • width: 画像の幅
  • height: 画像の高さ

属性は要素の静的な情報を定義するために使用されます。つまり、ページが読み込まれた時点で決定され、その後変更されることはありません。

プロパティ

プロパティは、JavaScriptなどのプログラミング言語を使用して、要素の状態や動作を動的に変更するために使用されます。属性とは異なり、プロパティは要素名とプロパティ名の間に**ドット(.)**を使用します。

<img id="my-image">
const image = document.getElementById("my-image");
image.src = "new-image.jpg";
image.width = 300;

上記の例では、img要素にid="my-image"という属性が設定されています。その後、JavaScriptを使用して、image変数にimg要素を取得し、srcプロパティとwidthプロパティを変更しています。

このように、プロパティはJavaScriptを使用して、要素の動的な変更を行うために使用されます。

項目属性プロパティ
役割要素に情報を付与する要素の状態や動作を動的に変更する
記述方法要素名:属性名="属性値"要素名.プロパティ名 = 値
変更タイミングページ読み込み時JavaScriptを使用して動的に変更可能
使用例画像のパス、幅、高さなど画像の切り替え、アニメーションなど



HTMLファイル:

<!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>
  <h1 id="heading">これは見出しです</h1>
  <button id="button">ボタン</button>
  <script src="script.js"></script>
</body>
</html>

JavaScriptファイル:

// 要素を取得
const heading = document.getElementById("heading");
const button = document.getElementById("button");

// 属性を取得
const headingText = heading.getAttribute("textContent");
const buttonText = button.getAttribute("textContent");

// 属性を変更
heading.setAttribute("textContent", "新しい見出し");
button.setAttribute("textContent", "新しいボタン");

// プロパティを取得
const headingStyle = heading.style.color;
const buttonStyle = button.style.backgroundColor;

// プロパティを変更
heading.style.color = "red";
button.style.backgroundColor = "blue";

// イベントリスナーを追加
button.addEventListener("click", () => {
  // ボタンがクリックされた時の処理
  alert("ボタンがクリックされました!");
});

上記のコードを実行すると、以下のようになります。

  • 最初は、<h1>要素のテキストは「これは見出しです」で、ボタンのテキストは「ボタン」です。
  • JavaScriptを使用して、<h1>要素のテキストとボタンのテキストを変更します。
  • ボタンをクリックすると、「ボタンがクリックされました!」というアラートが表示されます。



属性とプロパティの違いを視覚的に理解するために、図を用いる方法があります。

上記の図は、属性プロパティの関係を家に見立てて表現しています。

  • 家そのものがHTML要素を表します。
  • 家の設計図がHTML属性を表します。設計図は、家を建てる際に必要な情報(大きさ、構造、材料など)を記載します。
  • 家の住人がHTMLプロパティを表します。住人は、家に住みながら、家の状態や動作を変化させます(家具の配置、照明の点灯など)。

この図を参考に、属性は要素の設計図のようなもので、プロパティは要素に住む人

インタラクティブな学習ツール

これらのツールでは、実際にHTMLコードを書きながら、属性プロパティの違いを確認することができます。

チュートリアル

書籍

これらの書籍では、属性プロパティ


javascript html dom


HTMLのtitle属性:使い方とベストプラクティス

HTMLの<td>要素のtitle属性は、マウスホバー時に表示されるツールチップにテキストを表示するために使用されます。この属性値に改行を挿入することで、複数行にわたってテキストを表示することができます。改行方法title属性値に改行を挿入するには、以下の2つの方法があります。...


【解決策あり】「text-overflow: ellipsis」が機能しない?原因と解決策を分かりやすく解説

前提条件を確認するまず、「text-overflow: ellipsis」を有効にするためには、以下のプロパティが設定されている必要があります。white-space: nowrap;:要素内のテキストを1行に保ちます。overflow: hidden;:要素からはみ出した部分を非表示にします。...


Node.js開発で発生!process.env.NODE_ENVがundefinedになる謎を解き明かす

process. env. NODE_ENVがundefinedになる理由はいくつかあります。設定されていないデフォルトでは、process. env. NODE_ENVは設定されていません。開発環境ではdevelopment、本番環境ではproductionなど、適切な値を設定する必要があります。...


React / JSX 動的コンポーネント:パターンとベストプラクティス

変数を使うコンポーネント名を格納する変数を用意し、その変数を JSX 内で展開することで、動的にコンポーネント名を設定できます。useState フックを使ってコンポーネント名を状態変数として管理することで、動的にコンポーネント名を設定できます。...


【徹底解説】JavaScriptとNode.jsの非同期処理:async/awaitでスマートな開発を!

近年、Web開発において非同期処理がますます重要になってきています。非同期処理とは、プログラムが次の処理に移る前に、他の処理の完了を待機する処理を指します。JavaScriptとNode. jsでは、非同期処理を扱うための強力なツールとして、async/await構文が提供されています。...