【JavaScript / DOM】要素ノードの属性情報 - getAttribute / setAttribute / removeAttribute
JavaScript/DOMの『要素ノードの属性情報』について解説します。
検証環境
要素ノードの属性情報
JavaScript/DOMの要素ノードは属性に関するプロパティやメソッドを持ちます。
それらを使用し、属性の取得や設定、削除等の操作が可能です。
属性値の取得
属性値の取得はプロパティまたはメソッドを使用した2つの方法があります。
プロパティ(属性名)
属性名と同名の要素ノードのプロパティに属性値が格納されています。
基本構文
要素ノード.属性名
サンプル
<input id="item" type="text" name="content" value="Hello World" required>
<script type="text/javascript">
let node = document.getElementById("item");
___ih_hl_start
let x = node.value;
___ih_hl_end
console.log(x);
</script>
Hello World
メソッド(getAttribute)
要素ノードには属性値を取得するgetAttributeメソッドが備わっています。
基本構文
要素ノード.getAttribute("属性名")
サンプル
<input id="item" type="text" name="content" value="Hello World" required>
<script type="text/javascript">
let node = document.getElementById("item");
___ih_hl_start
let x = node.getAttribute("value");
___ih_hl_end
console.log(x);
</script>
Hello World
属性値の設定
属性値の設定はプロパティまたはメソッドを使用した2つの方法があります。
プロパティ(属性名=値)
属性名と同名の要素ノードのプロパティに値を設定します。
基本構文
要素ノード.属性名 = 値
サンプル
<input id="item" type="text" name="content" value="Hello World" required>
<script type="text/javascript">
let node = document.getElementById("item");
___ih_hl_start
node.value = "Good Morning";
___ih_hl_end
let x = node.value;
console.log(x);
</script>
Good Morning
メソッド(setAttribute)
要素ノードには属性値を設定するsetAttributeメソッドが備わっています。
基本構文
要素ノード.setAttribute("属性名", "値")
サンプル
<input id="item" type="text" name="content" value="Hello World" required>
<script type="text/javascript">
let node = document.getElementById("item");
node.setAttribute('value', "Good Morning");
let x = node.value;
console.log(x);
</script>
Good Morning
属性一覧
属性一覧の取得はプロパティまたはメソッドを使用した2つの方法があります。
プロパティ(attributes)
要素ノードのattributesプロパティは属性一覧が格納されています。
基本構文
要素ノード.attributes
サンプル
<input id="item" type="text" name="content" value="Hello World" required>
<script type="text/javascript">
let node = document.getElementById("item");
___ih_hl_start
let attrs = node.attributes;
___ih_hl_end
console.log(attrs);
for( let attr of attrs ) {
___ih_hl_start
console.log(attr.name, attr.value);
___ih_hl_end
}
</script>
NamedNodeMap {0: id, 1: type, 2: name, 3: value, 4: required, …}
id item
type text
name content
value Hello World
required
属性一覧はNamedNodeMap
オブジェクトとして取得します。
各属性は属性ノードになっており、属性名はname
プロパティ、属性値はvalue
プロパティです。
メソッド(getAttributeNames)
要素ノードには属性一覧を取得するgetAttributeNamesメソッドが備わっています。
基本構文
要素ノード.getAttributeNames();
サンプル
<input id="item" type="text" name="content" value="Hello World" required>
<script type="text/javascript">
let node = document.getElementById("item");
___ih_hl_start
let attrs = node.getAttributeNames();
___ih_hl_end
console.log(attrs);
for( let attr of attrs ) {
console.log(attr);
}
</script>
(5) ['id', 'type', 'name', 'value', 'required']
id
type
name
value
required
attributesプロパティとは異なり、属性名の一覧を取得します。
削除(removeAttribute)
要素ノードには属性を削除するremoveAttributeメソッドが備わっています。
基本構文
要素ノード.removeAttribute("属性名");
サンプル
<input id="item" type="text" name="content" value="Hello World" required>
<script type="text/javascript">
let node = document.getElementById("item");
console.log(node.getAttributeNames());
node.removeAttribute("value");
console.log(node.getAttributeNames());
</script>
(5) ['id', 'type', 'name', 'value', 'required']
(4) ['id', 'type', 'name', 'required']