プログラマー VTuber 衣亥栖ティオのちょっとした話

Youtubeに投稿したプログラミング学習動画の補足説明をするためのブログです。

プログラマーへの道 #27 の補足説明

こんにちは、プログラマーVTuberの衣亥栖ティオです。
今回は以下の動画の補足説明をします。 動画内で実装したソースコードも載せています。


今回の動画で実装したソースコード

以下が今回実装したソースコードです。

押された編集ボタンの要素を取得する

動画ではメモ一覧に表示されているタイトルをモーダルにセットする処理を作っていますが、 その際に "押された編集ボタンの要素" を取得しています。 実際のコードが以下です。

editButton.addEventListener("click", (event) => {
      const memoId = event.currentTarget.dataset.memoId

     //省略
})

addEventListener() の引数である event にはクリックに関する様々な情報が格納されています。

Event - Web API | MDN

上記のコードでは押された編集ボタンの要素である currentTarget を利用することで、 編集ボタンにセットした memo-id を取得しています。

Event.currentTarget - Web API | MDN

getElementById() から直接プロパティを参照する

以下のように getElementById() に直接 ".(ドット)" をつなげることで、直接プロパティを参照することができます。

const editButton = document.getElementById(editButtonId)
  editButton.addEventListener("click", (event) => {
  const memoId = event.currentTarget.dataset.memoId

  // innerText を直接参照することで、title 変数にはタイトルの文字列が代入される。
  const title = document.getElementById("id-title-in-list-" + memoId).innerText

  //省略

以下のように titleInListElement という変数にHTML要素を格納してから、 title 変数にタイトルを代入してもよいのですが、 HTML要素を titleInListElement 変数を利用する必要がない(無駄な変数を定義する必要はない)ので、 getElementById() から直接プロパティを参照する方法で実装しました。

const editButton = document.getElementById(editButtonId)
  editButton.addEventListener("click", (event) => {
  const memoId = event.currentTarget.dataset.memoId

  // HTML要素を取得するだけにする。
  const titleInListElement = document.getElementById("id-title-in-list-" + memoId)

  // タイトルを title 変数にセットする。
  const title = titleInListElement.innerText

  //省略

innerText と value の違い

Inputタグの値は value で取得しますが、HTMLタグの中にセットされている値は innerText で取得する必要があります。