むじんブログ ”3歩進んで2歩下がる”

37歳未経験からのエンジニア転職を目指す営業部長

学習のアウトプット(JavaScript3)

【script要素】

HTMLのタグの1つで、headタグの中に記述する。

JavaScriptだけで使うものでは無いようだが、基本的にはJavaScriptのコードを埋め込んだり参照したりするのに使うらしい。

 

<script src=ファイル名></script>

とする事で、ファイル(今回は○○.jsという名称のJavaScriptファイル)を読み込める。

 

この記述をした後に、jsファイルを編集していく。

JavaScriptは、編集後にブラウザのリロードをしないと反映しない)

 

---------------------------------------------------------------------------------

【イベント】

JavaScriptは「何かが起きたらコードを実行する」という仕組みになっている。

この「何かが起きる」ことを『イベント』と呼ぶ。

また、イベントによってJavaScriptのコード(関数など)が起動することを

『イベント発火』と表現する。

 

・イベント例

ボタンをクリックする、カーソルを乗せるなど

 

・イベント発火の例

イベント名 説明
loadイベント ページ全体が全て読み込まれた後に、イベント発火する
clickイベント 指定された要素がクリックされた時に、イベントが発火する
mouseoverイベント マウスカーソルが指定された要素上に乗った時に、イベントが発火する
mouseoutイベント マウスカーソルが指定された要素上から外れた時に、イベントが発火する

 

---------------------------------------------------------------------------------

【addEventListener】

イベント発火の時に起動する関数を定義するメソッド。

 

要素.addEventListener('イベント名', 関数)と記述する。

※Listenerはリスナー

※要素はgetElement○○のメソッドで取得する

 

---------------------------------------------------------------------------------

【loadイベント】

JavaScriptのコードは、そのままではHTMLのコードより先に読み込まれる。

その為、例えば上記のgetElementメソッドをそのまま用いると、

ブラウザにHTMLが読み込まれる前に指定の要素を取得しようとする。

(→取得できず、結果がnullとなってしまう)

 

これを避けるために、loadイベントを使う。

loadによって、順番がページの読み込み→JavaScriptのコード実行

となる。

 

・書き方

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

 関数の内容

}

例えば「○○の要素を取得して、この要素にカーソルが乗った時に色を変える」というような内容が関数の中身に入る。

(詳しくは後述)

 

---------------------------------------------------------------------------------

【インラインスタイル】

HTMLの開始側のタグに、CSSを直接書き込む方法。

 

インラインスタイルの追加:setAttributeメソッド

インラインスタイルの削除:removeAttributeメソッド

を用いて記述する。

 

---------------------------------------------------------------------------------

【setAttributeメソッド】

指定した要素に新しい属性を追加(または上書き)するメソッド。

※attributeは「属性」という意味。

 

要素.setAttribute(name, value)

nameは属性の名前、valueは属性に指定したい値を記述する。

 

例)

const sample = document.getElementById("test")

sample.setAttribute("style", "color: red;")

「idがtestである要素に対して、styleがcolor redの状態で取り出す」という意味。

 

【removeAttributeメソッド】

指定した要素から、特定の属性を取り除くメソッド。

書き方はsetAttributeと同じ。

 

---------------------------------------------------------------------------------

【カーソルを乗せると色が変わり、外すと色が戻る実装】

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

loadイベントによって、ページが読み込まれてからJavaScriptコードが実行される

  const pullDownButton = document.getElementById("lists")

  listsというid名の要素を取得して、pullDownBottunという変数に代入する

  pullDownButton.addEventListener('mouseover', function(){

  pullDownButtonにマウスを乗せるとイベント発火する

    pullDownButton.setAttribute("style"; "background-color: #FFBEDA;)

    pullDownButtonにstyle→背景色#FFBEDAを属性追加する

    }

 

  pullDownButton.addEventListener('mouseout', function(){

    pullDownButton.removeattribute("style"; "background-color: #FFBEDA;)

    マウスを外すとstyle→背景色#FFBEDAが解除される

    }

})

---------------------------------------------------------------------------------

【プルダウンメニューの実装】

プルダウンメニューは、単にプルダウンメニューを記述しただけでは表示されたままになるので、予めdisplay: none;を仕込んでおき、クリックした時にdisplay: blockに変わるようにすればよい。

 

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

 

  const pullDownButton = document.getElementById("lists")

  const pullDownParents = document.getElementById("pull-down")

  pull-downというid名の要素を取得して、pullDownParentsという変数に代入する

 

  pullDownButton.addEventListener('mouseover', function(){

    pullDownButton.setAttribute("style"; "background-color: #FFBEDA;)

    }

 

  pullDownButton.addEventListener('mouseout', function(){

    pullDownButton.removeAttribute("style"; "background-color: #FFBEDA;)

    }

 

  pullDownButton.addEventListener('click', function(){

  pullDownButtonをクリックするとイベント発火する

    pullDownParents.setAttribute("style", "display: block;")

    pullDownParentsにstyle→display: block;を属性追加する

  }

})