📒Javascript DOM #02 :)


1.操作DOM


🔵 Element.prototype.innerHTML

  • setterとgetterは、要素ノードのHTML寸法を取得または変更するために存在するアクセス者プロファイルです.
  • 要素ノードのコンテンツ領域に含まれるすべてのHTMLタグを文字列として返します!!
  • を割り当てると、要素ノードのすべてのサブノードが削除され、HTMLタグがブロックされ、要素ノードとしてのサブノードがDOMに反映されます!!
  • 👾 #1
  • hyml
  • <ul id="fruits">
      <li class="apple">Apple</li>
    </ul>
  • js
  • const $fruits = document.getElmentById('fruits');
    $fruits.innerHTML += '<li class="banana">Banana</li>';
    👉🏻 すべてのサブエレメントを除去した後、apple、バナナを追加します!
    👉🏻 すべてのサブノードを削除し、新しいサブノードを作成してDOMを反映するため、効率が低下します!!
    👉🏻 挿入位置を指定できません~!

    🔵 Element.prototype.insertAdjacentHTML(position, DOMString)

  • 既存の要素を削除せずに、指定した場所に新しい要素を挿入します.
  • 🔵 ノードの作成と追加


    ✏️ Document.prototype.createElement(tagName)

  • 要素ノードを作成して返します.文字列
  • を引数として渡す
  • は既存のDOMとは独立しており、
  • の追加処理が必要である.

    ✏️ Document.prototype.createTextNode(text)

  • テキストノードが生成され、返されます.文字列
  • を引数として渡す
  • は既存のDOMとは独立しており、
  • の追加処理が必要である.

    ✏️ Node.prototype.appendChild(childNode)

  • メソッドは、呼び出しノードの最後のサブノードとして追加される.
  • テキストノードを追加することもできます.
  • 🔵 Document.prototype.createDocumentFragment()

  • の空のDocumentFragmentノードを生成して返します.
  • 不要なコンテナ要素(div)を作成することなく、複数のノードを効率的に追加できます.

    🔵 Node.prototype.insertBefore(newNode, childNode)

  • メソッドは、第1のパラメータ伝達ノードを第2のパラメータ伝達ノードの前に挿入する!
  • 🔵 Node.prototype.cloneNode([deep: true| false])

  • ノードのコピーを作成し、
  • に戻ります.
  • true:深放射、false:浅放射
  • 省略時は浅いコピー、浅いコピーテキストノード
  • はコピーしない.

    🔵 Node.prototype.replaceChild(newChild, oldChild)

  • は、自分のノードを呼び出すサブノードを別のノード
  • に置き換える.
    パラメータとして
  • oldChildパラメータに渡されるノードは、Childメソッドを置換するノードを呼び出すサブノードである必要がある.
  • oldChildはDOMから削除されます.
  • 🔵 Node.prototype.removeChild(child)

  • サブノードがDOMから削除されました.
  • 2.調査

  • HTMLドキュメントは、分割時に「ドキュメントツリー」ノードに変換された「ドキュメント要素」ノードに関連付けられます.
  • 各HTMLドキュメントツリーは、ドキュメントツリーノードを生成します.
  • 「ツリー」の参照は、要素ノードのプロパティ構成に格納されます.これは、類似した配列のオブジェクトであり、インタラクティブなNameNodeMapオブジェクトです.
  • 要素のすべてのツリーノードは、要素ノードの要素です.prototype.attributes propertyで取得できます.
  • プロパティpropertyは、getterのみが存在する読み取り専用アクセサpropertyです.
  • 👾
  • html
  • <input id="user" type="text" value="zooyaho">
  • js
  • const {attributes} = document.getElementById('user');
    
    console.log(attributes.id.value); // user

    🔵 Element.prototype.getAttribute/setAttribute

  • プロパティプロパティを参照せずに取得および変更できます.
  • getAttribute(attributeName), setAttribute(attributeName, attributeValue)
  • 🔵 属性の存在、削除を確認


    ✏️ Element.prototype.hasAttribute(attributeName)


    チェック
  • プロパティが存在し、ブール値
  • を返します.

    ✏️ Element.prototype.removeAttribute(attributeName)

  • 属性
  • を削除

    3.データ・ウェアハウスとデータセットのプロパティ

  • html要素で定義されたカスタムドキュメントツリーとJavaScriptの間でデータを交換できます.
  • データクエリは、データ接頭辞の後の任意の名前を使用します.
  • データクエリ値はHTML Elementです.データセットのプロパティを取得し、DOMStringMapオブジェクトに戻ることができます.
  • DOMStringMapオブジェクトには、データ接頭辞の後の名前をCamel caseに変換するPropertyがあります.
  • 👾 #
  • html
  • <ul class="users">
      <li id="1" data-user-id="1234" data-role="admin">Lee</li>
      <li id="2" data-user-id="0000" data-role="user">Park</li>
    </ul>
  • js
  • const users = [...document.querySelector('.users').children];
    const user = users.find(user => user.dataset.userId === '1234');
    console.log(user.dataset.role); // 'admin'

    4.デザイン


    🔵 HTMLElement.prototype.style

  • setter/getterの両方に存在するアクセス者プロファイル、行内スタイルを取得、追加、または変更します.
  • 🔵 クラスアクション


    ✏️ Element.prototype.className

  • setter/getterの両方に存在するアクセス者プロファイルは、文字列
  • を返します.
  • スペースで区切られた複数のクラスを返す場合、処理が不便です.
  • ✏️ Element.prototype.classList

  • クラス言語ツリー情報を含むDOMTOKEnListオブジェクト
  • を返す.
  • DOMTOKEnListオブジェクトは類似の配列オブジェクトであり、小さい、多様な方法
  • を提供する.
  • add(...className):
  • を追加
  • remove(...className):削除、ない場合は無視エラー.
  • item(index):引数のクラス値を返します.(文字列)
  • contains(クラス名):含まれているかどうかを確認し、ブール値
  • を返します.
  • replace(oldName,newName):渡された文字列に変換されます.
  • 切り替え(className[,force]):パラメータとして渡される文字列に一致するクラスがある場合は削除し、ない場合は追加します.
  • 🔵 要素に適用するCSSスタイルを参照してください

  • クラスのスタイルを適用するか、デフォルトのスタイルを継承することでスタイル構成を参照できません.
  • ✏️ window.getComputedStyle(elment[,pseudo])

  • HTML要素に適用されるすべてのCSSスタイルを参照できます.
  • CSSSTylescriptionオブジェクトに含まれて戻ります!
  • 👾 #1
  • html
  • <div class="box">Box</div>
  • js
  • const $box = document.quetySelector('.box');
    console.log(window.getComputedStyle($box));
    // CSSStyleDecleration
    
    console.log(window.getComputedStyle($box).width); // 100px