0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【JavaScript】属性とプロパティの違い

Posted at

はじめに

HTMLやJavaScriptを扱う際に混同しやすい「属性(Attribute)」と「プロパティ(Property)」について、違いを整理していきましょう。

属性(Attribute)とは

属性はHTML上に記述される静的な値です。HTMLファイルやHTMLコードの中に直接書かれた文字列として存在します。

<input type="text" value="初期値" id="username">

上記のコードでは、typevalueidがすべて属性です。ブラウザがHTMLを解析する際に読み取られます。

プロパティ(Property)とは

プロパティはDOM(Document Object Model)オブジェクトが持つJavaScriptのプロパティです。ブラウザがHTMLを解析してDOMツリーを構築した後、JavaScriptからアクセスできる動的な値として存在します。

const input = document.getElementById('username');
console.log(input.value); // プロパティにアクセス

両者の関係性

HTMLの属性は、DOMオブジェクトのプロパティを初期化するために使われます。しかし、一度DOMが生成された後は、属性とプロパティは独立して動作するのが特徴ですね。

具体的な違い

動作の違い

<input type="text" value="初期値" id="sample">

このinput要素に対して、ユーザーが「変更後の値」と入力した場合:

const input = document.getElementById('sample');

// 属性: 変化しない(HTML上の初期値のまま)
console.log(input.getAttribute('value')); // "初期値"

// プロパティ: 現在の状態を反映
console.log(input.value); // "変更後の値"

更新処理の違い

属性とプロパティの対応

すべての属性に対応するプロパティがあるわけではなく、またプロパティの名前が属性名と異なる場合もあります。

HTML属性 DOMプロパティ 備考
class className 名前が異なる
for htmlFor 名前が異なる
value value input要素では独立して動作
checked checked checkbox/radioの状態

実装時の注意点

プロパティを使うべきケース

現在の状態を取得・変更したい場合はプロパティを使います。

// 良い例: プロパティで現在の値を取得
if (input.checked) {
    console.log('チェックされています');
}

// 現在の入力値を取得
const currentValue = input.value;

属性を使うべきケース

HTML上の初期値を確認したい場合や、カスタムデータ属性にアクセスする場合は属性を使いましょう。

// 初期値の確認
const initialValue = input.getAttribute('value');

// カスタムデータ属性へのアクセス
const userId = element.getAttribute('data-user-id');

まとめ

属性とプロパティの違いは以下の通りです:

属性は静的なHTML上の記述であり、初期値として機能します。getAttribute()setAttribute()でアクセスします。

プロパティは動的なJavaScriptオブジェクトの値であり、現在の状態を反映します。ドット記法やブラケット記法でアクセスします。

この違いを理解することで、フォームの値管理やDOM操作をより正確に実装できるようになります。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?