HTML
 Computer >> コンピューター >  >> プログラミング >> HTML

HTML DOM normalize()メソッドとは?テキストノードの正規化をわかりやすく解説

normalize()メソッドとは

HTML DOMのnormalize()メソッドは、指定したノード内にある空のテキストノードを削除し、隣接するテキストノードどうしをひとつのノードに結合するためのメソッドです。

JavaScriptでDOMを動的に操作していると、意図せず空のテキストノードが残ったり、複数のテキストノードが連続して存在したりすることがあります。normalize()メソッドを使えば、こうした不要なノードを一括で整理でき、childNodesリストをクリーンな状態に保つことができます。

構文

normalize()メソッドの基本的な呼び出し方は以下の通りです。

document.normalize()

なお、normalize()はdocumentオブジェクトだけでなく、個々の要素ノードに対しても呼び出すことができます。後述のサンプルでは、特定のdiv要素に対してnormalize()を実行しています。

使用例

以下のサンプルでは、テキストボックスに入力した内容からテキストノードを作成し、「Normalize」ボタンをクリックするとノードが正規化されます。各操作の後、画面には現在のテキストノードの総数が表示されます。

<!DOCTYPE html>
<html>
<head>
<title>HTML DOM normalize()</title>
<style>
   form {
      width:70%;
      margin: 0 auto;
      text-align: center;
   }
   * {
      padding: 2px;
      margin:5px;
   }
   input[type="button"] {
      border-radius: 10px;
   }
</style>
</head>
<body>
   <form>
      <fieldset>
         <legend>HTML-DOM-normalize( )</legend>
         <input type="text" id="textSelect" placeholder="type here...">
         <input type="button" onclick="makeTextNode()" value="Create Text Node">
         <input type="button" onclick="normalizeDocument()" value="Normalize">
         <div id="appendedNodes">All Text Nodes: </div>
         <div id="divDisplay"></div>
      </fieldset>
   </form>
<script>
   var divDisplay = document.getElementById("divDisplay");
   var textSelect = document.getElementById("textSelect");
   var appendedNodesDiv = document.getElementById("appendedNodes");
   divDisplay.textContent = 'Total Text Nodes: '+appendedNodesDiv.childNodes.length;
   function makeTextNode() {
      var textNode = document.createTextNode(textSelect.value);
      appendedNodesDiv.appendChild(textNode);
      if(textSelect.value === '')
         divDisplay.textContent = 'Empty Text Node Created';
      else
         divDisplay.textContent = 'Text Node Created with value: '+textSelect.value;
         divDisplay.textContent += ', Total Text Nodes: '+appendedNodesDiv.childNodes.length;
      }
   function normalizeDocument() {
      appendedNodesDiv.normalize();
      divDisplay.textContent = 'Total Text Nodes: '+appendedNodesDiv.childNodes.length;
   }
</script>
</body>
</html>

実行結果

どのボタンもクリックしていない初期状態 −

入力欄を空のまま「Create Text Node」ボタンをクリックした後 − 空のテキストノードが作成され、テキストノードの総数が増加します。

HTML DOM normalize()メソッドとは?テキストノードの正規化をわかりやすく解説

入力欄に文字列を入力して「Create Text Node」ボタンをクリックした後 − 入力した値を持つテキストノードが作成されます。

HTML DOM normalize()メソッドとは?テキストノードの正規化をわかりやすく解説

Normalize」ボタンをクリックした後 − 空のテキストノードが削除され、テキストノードの総数が減少します。

HTML DOM normalize()メソッドとは?テキストノードの正規化をわかりやすく解説

Normalize」ボタンをクリックした後 − 隣接するテキストノードが結合され、ノード全体が整理された状態になります。

HTML DOM normalize()メソッドとは?テキストノードの正規化をわかりやすく解説

  1. HTML DOMのhasAttributes()メソッドとは?構文・使い方・サンプルコードを解説

    HTML DOMのhasAttributes()メソッドは、ある要素が属性(attribute)を1つでも持っているかどうかを判定するためのメソッドです。要素が属性を保持している場合はtrueを返し、1つも属性を持っていない場合はfalseを返します。また、このメソッドを要素ノード以外のノードに対して呼び出した場合、戻り値は常にfalseになるという特徴があります。 構文 hasAttributes()メソッドの基本構文は以下のとおりです。 node.hasAttributes() 引数は不要で、対象となるノードに対して直接呼び出すだけで、真偽値(Boolean)が返されます。 使用例 ここで

  2. HTML DOMのfocus()メソッドとは?基本構文と使い方を実例付きで解説

    HTML DOMのfocus()メソッドは、指定したHTML要素にフォーカスを設定するために使用されるメソッドです。ただし、すべてのHTML要素にフォーカスを適用できるわけではありません。たとえば、<p>タグのようにフォーカスを受け付けない要素も存在します。また、要素からフォーカスを解除したい場合は、blur()メソッドを使用します。 focus()メソッドの主な活用シーン ページ読み込み時やフォーム表示時に、最初の入力欄へ自動的にカーソルを合わせる バリデーションエラーが発生した際に、該当する入力フィールドへフォーカスを移動する モーダルウィンドウを開いたときに、特定のボタンや