LoginSignup
0
0

More than 3 years have passed since last update.

Javascript基本集(4)~DOM操作~

Posted at

Javascript基本集(4)~DOM操作~

DOMとはDocument Object Model(ドキュメントオブジェクトモデル)の略称で、
HTMLを解析し、データを作成する仕組みのこと。

HTMLは階層構造になっており、DOMによって解析されたHTMLは、階層構造のあるデータとなる。
このことを、DOMツリーやドキュメントツリーと呼び、JavaScriptを使うとDOMツリーを操作してCSSを変更したり、要素を増やしたり、消したりすることが可能。
DOMツリーの一部のことを、ノードオブジェクトと呼ぶ。
スクリーンショット 2020-03-28 18.40.36.png

ノードの取得

①document.getElementById("id名");

引数に渡したidを持つ要素を取得出来る。

②document.getElementsByClassName("class名");

同じclassを持つ要素を全て取得することが可能。

③document.querySelector("セレクタ名");

引数で指定したセレクタに合致するもののうち一番最初に見つかった要素1つを取得する。

イベント

HTMLの要素に対して行われた処理要求のこと。
「ノードオブジェクト」に「イベント」が起きた時、「関数」を実行出来る。
一つのイベントと一つの関数を紐付ける仕組みのことをイベントリスナと呼ぶ。

①addEventListener

(ノードオブジェクト).addEventListener("イベント名", 関数);

addEventListenerは、あるノードオブジェクトに対して、イベントリスナを追加するメソッド。

②window.onload

ブラウザは上から順に実行をするため、document.getElementById("id名")等のJavaScriptのコードを読み込む際、まだhtmlファイルのheadタグ内までしか読み込まれておらず、bodyタグ内にあるコードは読み込まれないので、ノードオブジェクトは取得できない。
ページの読み込みが終わったらjsの中身を実行するようにできるのが、window.onload

例は2つ

window.onload = function() { 

  (ノードオブジェクト).addEventListener("イベント名", 関数); 

};
window.addEventListener('load', function() { 

  (ノードオブジェクト).addEventListener("イベント名", 関数);

 });

③innerHTML

innerHTMLを使用するとHTML要素の中身を書き換えることが出来る。

window.addEventListener("load", function() {

  // テキストの要素を取得し、変数で定義
  let btn = document.querySelector("#Button");
  let changeText = document.querySelector("p");
  // ボタンをクリックしたらテキストが置換される
  btn.addEventListener("click", function() {
    changeText.innerHTML = '変更されました';
  });

});

④classList.add

あらかじめ用意されているクラスを追加することが出来る。

// Buttonを取得して、変数で定義
let btn = document.querySelector("#Button");

// クラス追加を押したらクラスが追加される
btn.addEventListener("click", function() {
  changeText.classList.add("クラス名");
});

⑤classList.remove

指定したクラスを削除することが出来る。
  
他にもありますが、今回はここまで:santa:

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