あっくんブログ Written by Akihiro Tsuji

JavaScript DOM操作の部品

JavaScript プログラミング

こんにちはあっくんです。夏も終わり、少しずつ涼しくなってきましたね。といっても、暑くなったり、寒くなったりと体調の調整が難しいですね。

今回はDOM操作の部品です。

JavaScript DOM操作の部品

DOM操作のメソッドをオブジェクトにまとめて、コードの先頭にnodeOpsと記述することで可読性をあげます。

<script> const nodeOps = { qs(selector, scope) { return (scope || document).querySelector(selector); }, create(type) { return document.createElement(type); }, setAttr(target, key, value) { target.setAttribute(key, value); }, append(parent, target) { parent.appendChild(target); }, html(target, value) { target.innerHTML = value; }, on(target, eventType, callback) { target.addEventListener(eventType, () => { callback(); }); }, classToggle(target, value) { target.classList.toggle(value); }, }; </script>
Code language: HTML, XML (xml)

今回使用するDOM操作のメソッドです。

.querySelector(s)
CSSセレクターsで一致する、最初の要素を返します。見つからなければ、nullを返します。

document.createElement()
引数で指定したタグ名の要素を作ります。

.setAttribute(s, v)
属性sに値vを設定します。

.appendChild(n)
子ノードとしてノードnを追加。

.innerHTML
要素内のHTML文字列

.addEventListener(e, f)
イベントeが起きた時に実行する関数fを登録します。

.classList.toggle(s)
クラスsを追加か削除します。追加時はtrue,削除時はfalseを返します。

使用例 上記のメソッドを使用しています。コードの先頭にnodeOpsとすることで、DOM操作したコードすぐに分かるので、管理しやすいです。

<!DOCTYPE html> <body></body> <script> const nodeOps = { qs(selector, scope) { return (scope || document).querySelector(selector); }, create(type) { return document.createElement(type); }, setAttr(target, key, value) { target.setAttribute(key, value); }, append(parent, target) { parent.appendChild(target); }, html(target, value) { target.innerHTML = value; }, on(target, eventType, callback) { target.addEventListener(eventType, () => { callback(); }); }, classToggle(target, value) { target.classList.toggle(value); }, }; const body = nodeOps.qs("body"); const div = nodeOps.create("div"); nodeOps.setAttr(div, "class", "red"); nodeOps.append(body, div); nodeOps.html(div, "Hello World"); nodeOps.on(div, "click", () => { console.log("clicked"); }); </script> <style> .red { color: red; } </style> </html>
Code language: HTML, XML (xml)
Image from Gyazo

読んでいただいてありがとうございました。
コードマフィアさんのJavaScriptのメカニズムで勉強させていただきました。