JavaScriptで画面上の表示を変える
・まずはHTMLファイルにJavaScriptファイルを読み込む。
・script要素
実行できるコードを埋め込んだり参照したりするために使用されるHTML。
一般的には、JavaScriptのコードの埋め込みや参照に使用される。
# JavaScriptファイルを読み込む記述 (index.jsファイルが読み込まれる)
<script src="index.js"></script>
______________________
・JavaScriptのコードが実行される仕組み
JavaScriptは「何かが起きたら(=イベント)、コードを実行する」という概念に基づいて設計されている。
・イベント
HTMLに対して行われた処理の要求のこと。
例えば「ユーザーがブラウザ上のボタンをクリックした」「テキストフィールドでキー入力をした」「要素の上にマウスカーソルを乗せた」など。
また、イベントを認識してJavaScriptのコード(特に関数)が動き出すことを「イベント発火」と言う。
代表的なイベント名 説明
loadイベント
ページ全体が全て読み込まれた後に、イベント発火する
clickイベント
指定された要素がクリックされた時に、イベントが発火する
mouseoverイベント
マウスカーソルが指定された要素上に乗った時に、イベントが発火する
mouseoutイベント
マウスカーソルが指定された要素上から外れた時に、イベントが発火する
イベントを発火させるために、addEventListenerというメソッドを使用。
・addEventListener
イベント発火の際に実行する関数を定義するためのメソッド。
要素.addEventListener('イベント名', 関数)
______________________
使い方
HTMLファイルでidを指定。index.htmlに以下のように追記しましょう。
# index.htmlに記述
<header>
# 中略
<li class="background-red" id="lists">リスト
</li>
# 中略
</header>
idを指定した要素を取得。index.jsに記述する。
ただし、ページ全体がブラウザに読み込まれた後にJavaScriptのコードが読み込まれるようにする必要がある。(loadイベント)
# index.jsに記述
window.addEventListener('load', function(){ # ページが読み込まれた後にJavaScriptのコードを実行する
const pullDownButton = document.getElementById("lists")
console.log(pullDownButton)
})
・マウスカーソルが要素の上に乗った時にイベント発火させたい時
mouseoverイベント:マウスカーソルが指定の要素上に乗った時に、イベントが発火する
# index.jsに記述
window.addEventListener('load', function(){
const pullDownButton = document.getElementById("lists")
pullDownButton.addEventListener('mouseover', function(){
console.log("mouseover OK")
})
})
同様に・・・
○マウスカーソルが要素から外れた時にイベント発火させたい時
・・・mouseoutイベント
○クリックすることでイベント発火させたい時・・・clickイベント
window.addEventListener('load', function(){
const pullDownButton = document.getElementById("lists")
pullDownButton.addEventListener('mouseover', function(){
console.log("mouseover OK")
})
pullDownButton.addEventListener('mouseout', function(){
console.log("mouseout OK")
})
pullDownButton.addEventListener('click', function() {
console.log("click OK")
})
})
______________________
・JavaScriptでスタイルを操作するには
・インラインスタイル
HTML要素の開始タグの中に、直接CSSのソースコードを記述するプロパティの指定方法。
インラインスタイルの追加と削除はそれぞれsetAttributeとremoveAttributeというメソッドを使用する。
・setAttributeメソッド
指定した要素上に新しい属性を追加、または既存の属性の値を変更できるメソッド。
要素.setAttribute(name, value)
# name・・・属性の名前を、文字列で指定。
# value・・・属性に設定したい、値を指定。
例えば、
# HTMLで下記記述の場合、
<div id="test">テスト</div>
# setAttributeメソッドを使うと、
const sample = document.getElementById("test")
sample.setAttribute("style", "color: red;")
# => <div id="test" style="color: red;">テスト</div> が取得(付与)できる
・removeAttributeメソッド
指定した要素から、特定の属性を削除できるメソッド。
要素.removeAttribute(name, value)
# name・・・属性の名前を、文字列で指定。
# value・・・属性の中の、削除したい値を指定。
例えば、
# HTMLで下記記述の場合、
<div class="contents" id="apple">りんご</div>
# removeAttributeメソッドを使うと、
const apple = document.getElementById("apple")
apple.removeAttribute("class", "contents")
# => <div id="apple">りんご</div> として取得できる。
______________________
・イベントが発火した要素を取得するには
・this
関数の中でthisを使うと、イベント発火元となった要素を取得できる。
thisは、使用する場面によって取得できるものが異なる。ここでは「イベント発火元となった要素を取得することができる」と捉えている。
______________________
現状の属性状態(表示/非表示など)を確認するためには、付与されているインラインスタイルを取得する必要がある。
・・・属性の取得はgetAttributeメソッドを使用する。
・getAttributeメソッド
要素上の指定した属性の値を戻り値として返す。
要素.getAttribute('属性名')
例えば、
# HTMLで下記記述の場合、
<div class="contents" id="apple">りんご</div>
# getAttributeメソッドを使うと、
const apple = document.getElementById("apple")
apple.getAttribute("class")
# => contents というclass名が取得できる。
______________________
・debugger
ソースコードに処理を一旦停止させる場所を指定できる。
指定したブレークポイントまで処理が進み、処理が一時的に停止する。
処理が停止している状態で、特定の変数の値を確認したり、1行だけ処理を進めたりなど、幅広いデバッグが可能になる。
window.addEventListener('load', function(){
# 中略
pullDownButton.addEventListener('click', function() {
debugger # ここで処理を止める
# プルダウンメニューの表示と非表示の設定
if (pullDownParents.getAttribute("style") == "display:block;") {
pullDownParents.removeAttribute("style", "display:block;")
} else {
pullDownParents.setAttribute("style", "display:block;")
}
})
})
______________________
・innerHTML
指定したHTML要素(の文字列)を取得したり、書き換えを行ったりすることができる。
# HTMLで下記記述の場合、
<div class="contents" id="apple">りんご</div>
# innerHTMLで取得
const apple = document.getElementById("apple")
console.log(apple.innerHTML)
# => りんご
# innerHTMLで書き換え
apple.innerHTML = "青リンゴ"
console.log(apple.innerHTML)
# => 青リンゴ
______________________
window.addEventListenerを設置して、ページが読み込まれた後にその中の処理を実行していた。
その中の処理に名前をつけることができない、というデメリット。
冒頭に関数を設けてみると、
function pullDown() {
# 何らかの処理
}
window.addEventListener('load', pullDown)
window.addEventListenerが呼ばれたら、関数pullDownが実行される仕組みが取れる。
2020/11/13
この記事が気に入ったらサポートをしてみませんか?