JavaScriptã®ãã¿ã³ä½æã¨ã¯ãªãã¯ã¤ãã³ãå¦ç
Buttonãªãã¸ã§ã¯ãã¯ãHTMLã®<button>
è¦ç´ ã表ãã¦ãã¾ãã
é常ã¯ã<button>
è¦ç´ ã«ã¢ã¯ã»ã¹ããããã«ãgetElementById()ãã¡ã½ããã使ç¨ãã¾ãã
ãã ããããã°ã©ã ä¸ã§HTMLãã¿ã³ã使ããå¿ è¦ãããå ´åãããã¾ãã
JavaScriptã使ç¨ãã¦ãHTMLãã¿ã³ãããã°ã©ã ã§ä½æããæ¹æ³ãå¦ã¶ããã«ãDOMæä½ã®åºæ¬ã§ããè¦ç´ ã®åå¾ã追å ã»åé¤ã»ç½®æããçè§£ããå¿ è¦ãããã¾ãã
ã¾ããJavaScriptã§ã¯ãªãã¯ã¤ãã³ããå¦çããæ¹æ³ãéè¦ã§ãã
ãããã£ã¦ããã®è¨äºã§ã¯ãJavaScriptã使ç¨ãã¦HTMLãã¿ã³ã使ããæ¹æ³ã«ã¤ãã¦èª¬æããã¯ãªãã¯ã¤ãã³ãã®å¦çã«ã¤ãã¦ã詳ãã説æãã¾ãã
ãªãã詳細ãªDOMæä½ã«ã¤ãã¦ã¯ãJavaScript DOM操作の基本 要素の取得【追加・削除・置換ãåç §ãã¦ãã ããã
JSã®ã¤ãã³ã
JavaScriptã¯ããã©ã¦ã¶ã§ã¤ãã³ãé§ååã®ããã°ã©ãã³ã°ã¢ãã«ã使ç¨ãã¾ãã
ãã®ã¢ãã«ã¯ãå ¨ã¦ãã¤ãã³ãã«å¾ã£ã¦å®è¡ããããã¨ãæå³ãã¾ãã
JavaScriptã¨HTMLã®ç¸äºä½ç¨ã¯ãã¦ã¼ã¶ã¼ã¾ãã¯ãã©ã¦ã¶ããã¼ã¸ãæä½ãããã³ã«çºçããã¤ãã³ããéãã¦å¦çããã¾ãã
ãã¼ã¸ã®èªã¿è¾¼ã¿ããã¤ãã³ãã®ä¸ç¨®ã¨ãã¦æ±ããã¾ãã
ã¦ã¼ã¶ã¼ããã¿ã³ãã¯ãªãã¯ããã¨ããã®ã¯ãªãã¯ãã¤ãã³ãã¨ãã¦å¦çããã¾ãã
ãã®ä»ã®ä¾ã¨ãã¦ãä»»æã®ãã¼ãæ¼ããã¦ã£ã³ãã¦ãéãããã¦ã£ã³ãã¦ãµã¤ãºã夿´ãããDOMããã¼ãããããã§ãããçµäºããéåæãªã¯ã¨ã¹ãããã¼ã¸ã¹ã¯ãã¼ã«ãããã³ã¦ã¼ã¶ã¼ã«ãããã¼ãã¼ãå ¥åãããã¾ãã
ãã¾ãã¾ãªç¨®é¡ã®ã¤ãã³ããåå¨ããéçºè ã¯ãããã®ã¤ãã³ãã使ç¨ãã¦ãJavaScriptã§ã³ã¼ãåãããå¿çãå®è¡ã§ãã¾ãã
ãã¹ã¦ã®HTMLè¦ç´ ã«ã¯ãJavaScriptã³ã¼ããããªã¬ã¼ããä¸é£ã®ã¤ãã³ããå«ã¾ãã¦ãã¾ãã
ãããã£ã¦ãéçºè ã¯ãããã®ã¤ãã³ãã使ç¨ãã¦ããã¼ã¸ãããåçã«ããã¦ã¼ã¶ã¼ã¨ã¯ã¹ããªã¨ã³ã¹ãåä¸ããããã¨ãã§ãã¾ãã
JSã§HTMLãã¿ã³ãçæããæ¹æ³ãè¦ã¦ããã¾ãããã
ãã¿ã³ãªãã¸ã§ã¯ãã®çæ
JavaScriptã使ç¨ãã¦ãWebãã¼ã¸ã«ãã¿ã³ã追å ãããã¨ã¯ç°¡åã§ãã
document.createElementã¡ã½ããã使ç¨ãã¦ãæ°ããHTMLè¦ç´ ã使ãããã®è¦ç´ ã«å¿ è¦ãªããããã£ãè¨å®ããæå¾ã«appendChildã¡ã½ããã使ç¨ãã¦Webãã¼ã¸ã«è¦ç´ ã追å ãã¦ããæ¹æ³ã§ãã
以ä¸ã¯ããã®ããã»ã¹ãå®è¡ããããã®å®å ¨ãªã³ã¼ãä¾ã§ãã
// ãã¿ã³è¦ç´ ã使 let btn = document.createElement("button"); // ãã¿ã³ã®ããã¹ããè¨å® btn.innerHTML = "Click Me"; // ãã¿ã³ã追å ããå ´æã鏿 let target = document.getElementById("target"); // ãã¿ã³ã追å target.appendChild(btn);
ãã®ã³ã¼ãã¯ãdocument.createElementã¡ã½ããã使ç¨ãã¦ãæ°ããbuttonè¦ç´ ã使ãã¾ãã
ãã®å¾ãinnerHTMLããããã£ã使ç¨ãã¦ããã¿ã³ã®ããã¹ããClick Me
ã«è¨å®ãã¾ãã
ãã¿ã³ã追å ããå ´æã鏿ããã«ã¯ãWebãã¼ã¸ä¸ã§æ¢ã«åå¨ããè¦ç´ ã使ç¨ãããã¨ãã§ãã¾ãã
ä¸è¨ã®ä¾ã§ã¯ãgetElementByIdã¡ã½ããã使ç¨ãã¦ãIDãtarget
ã®è¦ç´ ãåå¾ãã¦ãã¾ãã
æå¾ã«ãappendChildã¡ã½ããã使ç¨ãã¦ãtargetè¦ç´ ã®æå¾ã«ãã¿ã³è¦ç´ ã追å ãã¾ãã
ããã«ãããWebãã¼ã¸ã«æ°ãããã¿ã³ã表示ããã¾ãã
ããä¸ã¤ããã¿ã³è¦ç´ ã使ããæ¹æ³ã¯ã次ã®ããã«ãªãã¾ãã
let btn = document.createElement("button"); btn.textContent = "Click Me"; // ãã¿ã³ã追å ããå ´æã鏿 let target = document.querySelector(".button-container"); // ãã¿ã³ã追å target.insertBefore(btn, target.firstChild);
See the Pen JavaScript ãã¿ã³ä½æ by dev.K | Webã¢ããªéçºè (@enjinia_f) on CodePen.
ãã®ä¾ã§ã¯ãtextContentããããã£ã使ç¨ãã¦ããã¿ã³ã®ããã¹ããè¨å®ãã¦ãã¾ãã
querySelectorã¡ã½ããã使ç¨ãã¦ãã¯ã©ã¹åãbutton-container
ã§ããè¦ç´ ãåå¾ãã¦ãã¾ãã
ããã¦ãinsertBeforeã¡ã½ããã使ç¨ãã¦ããã¿ã³è¦ç´ ãtargetè¦ç´ ã®æåã®åè¦ç´ ã¨ãã¦è¿½å ãã¦ãã¾ãã
JavaScriptã使ç¨ãã¦Webãã¼ã¸ã«è¦ç´ ã追å ãããã¨ã¯ç°¡åã§ãã¦ã¼ã¶ã¼ã¤ã³ã¿ãã§ã¼ã¹ãæ¹åããããã«é常ã«å½¹ç«ã¡ã¾ãã
ãã¿ã³ãªãã¸ã§ã¯ãã®ããããã£
ããã¸ã§ã¯ãã®å¿
è¦ã«å¿ãã¦ããã¿ã³ã®ååãtype
ãvalue
屿§ãè¨å®ãããã¨ãã§ããæã«ã¯ãã©ã¼ã ç¨ã®type='submit'
ãã¿ã³ã使ããå¿
è¦ãããã¾ãã
ã¦ã§ãéçºã«ããã¦ããã©ã¼ã ã使ãããã¨ã¯é常ã«ä¸è¬çã§ãã
ãã©ã¼ã ã«ã¯ãã¦ã¼ã¶ã¼ãå ¥åããæ å ±ããµã¼ãã¼ã«éä¿¡ããããã®æ©è½ãåãã£ã¦ãã¾ãã
ãã©ã¼ã ã«ã¯ãããã¹ãå ¥åãã©ã¸ãªãã¿ã³ããã§ãã¯ããã¯ã¹ããããããã¦ã³ãªã¹ããªã©ãæ§ã ãªå ¥åãã£ã¼ã«ããããã¾ãã
ããããæãéè¦ãªè¦ç´ ã®ä¸ã¤ã¯ãéä¿¡ãã¿ã³ã§ãã
ãã¿ã³ ãªãã¸ã§ã¯ãã®ããããã£ã¯ä¸è¨ã¨ãªãã¾ãã
Property | æ¦è¦ |
---|---|
autofocus | ãã¼ã¸ãã¼ãæã« ãã¿ã³ã«èªåçã«ãã©ã¼ã«ã¹ãå½ããããã«ãããã©ãããè¨å®ã¾ãã¯è¿ãã¾ã |
disabled | ãã¿ã³ãç¡å¹ã§ãããã©ããã®è¨å®ã¾ãã¯è¿ãã¾ãã |
form | ãã¿ã³ãå«ããã©ã¼ã ã¸ã®åç §ãè¿ãã¾ãã |
formAction | ãã¿ã³ã®formaction屿§ã®å¤ãè¨å®ã¾ãã¯è¿ãã¾ãã |
formEnctype | ãã¿ã³ã® formenctype 屿§ã®å¤ãè¨å®ã¾ãã¯è¿ãã¾ãã |
formMethod | ãã¿ã³ã®formmethod屿§ã®å¤ãè¨å®ã¾ãã¯è¿ãã¾ãã |
formNoValidate | éä¿¡æã«ãã©ã¼ã ãã¼ã¿ã®æ¤è¨¼ãè¡ããå¦ããè¨å®ã¾ãã¯è¿ãã¾ãã |
formTarget | ãã¿ã³ã®formtarget屿§ã®å¤ãè¨å®ã¾ãã¯è¿ãã¾ãã |
name | ãã¿ã³ã®name屿§ã®å¤ãè¨å®ã¾ãã¯è¿ãã¾ãã |
type | ãã¿ã³ã®ç¨®é¡ãè¨å®ã¾ãã¯è¿ãã¾ãã |
value | ãã¿ã³ã®value屿§ã®å¤ãè¨å®ã¾ãã¯è¿ãã¾ãã |
以ä¸ã®ã³ã¼ãã¯ãJavaScriptã使ç¨ãã¦éä¿¡ãã¿ã³ã使ããä¾ã§ãã
createElementã¡ã½ããã使ç¨ãã¦ããã¿ã³ãªãã¸ã§ã¯ãã使ãããã®å¾ã«å¿ è¦ãªããããã£ãè¨å®ãã¦ãã¾ãã
// ãã¿ã³ãªãã¸ã§ã¯ãã®ä½æ let btn = document.createElement("button"); // ãã¿ã³ã®ããã¹ããè¨å® btn.innerHTML = "éä¿¡"; // ãã¿ã³ã®ã¿ã¤ããè¨å® btn.type = "submit"; // ãã¿ã³ã®name屿§ãè¨å® btn.name = "submitBtn"; // ãã¿ã³ãããã¥ã¡ã³ãã«è¿½å document.body.appendChild(btn);
ä¸è¨ã®ã³ã¼ãã®å ´åãä¸è¨ã®ããã«HTMLã®ãã¿ã³ã¿ã°ã¨ãã¦ä½æããã¾ãã
<button type="submit" name="submitBtn"> éä¿¡ </button>
ä¸è¨ã®ã³ã¼ãã«ãã£ã¦ãHTMLã®éä¿¡ãã¿ã³ã¨åæ§ã®ãã¿ã³ã使ããã¾ãã
ãã®ãã¿ã³ã¯ãtype="submit"
屿§ãæã¡ããã©ã¼ã ãéä¿¡ãããã¨ãã«æ¼ããã¾ãã
ã¾ãããã¿ã³ã«ã¯name屿§ãè¨å®ããããã©ã¼ã ãå¦çããããã«å¿ è¦ãªæ å ±ããµã¼ãã¼ã«éä¿¡ããã®ã«å½¹ç«ã¡ã¾ãã
JavaScriptã§ã¯ãæ¨æºããããã£ãã¤ãã³ãããµãã¼ãããã¦ãã¾ãã
ãã¨ãã°ãfocusãclassListãªã©ãããã¾ãã
ãããã®ããããã£ãã¤ãã³ãã¯ããã¿ã³ã®åä½ã夿´ããã®ã«å½¹ç«ã¡ã¾ãã
以ä¸ããJavaScriptã使ç¨ãã¦ãã©ã¼ã ç¨ã®éä¿¡ãã¿ã³ã使ããæ¹æ³ã§ãã
ãã¿ã³ã®ããããã£ãJavaScriptã®æ¨æºããããã£ãã¤ãã³ããæ´»ç¨ãã¦ãã©ã¼ã ã®è¦ãç®ãåä½ã夿´ãããã¨ãã§ãã¾ãã
ã¤ãã³ããã³ãã©
JavaScriptã§ã¯ãã¯ãªãã¯ã夿´ãèªã¿è¾¼ã¿ãªã©ã®æ§ã ãªã¤ãã³ããã³ãã©ã¼ãããã¾ããä¸è¬çã«ä½¿ç¨ããããã®ã«ã¯ãonclickãonchangeãonloadãªã©ãããã¾ãã
ã¤ãã³ããã³ãã©ã¼ã¯ãã¦ã¼ã¶ã¼ãWebãã¼ã¸ã§ã¯ãªãã¯ããããä½ãããã®åä½ãããã¨ãã«é¢æ°ãå®è¡ãããããã«ãªãã¾ãã
ä¾ãã°ããã¿ã³ãã¯ãªãã¯ããã¨ãã«ä½ãããã®å¦çãå®è¡ãããå ´åã¯ã以ä¸ã®ããã«onclickããããã£ã夿´ãã¦é¢æ°ãå¼ã³åºããã¨ãã§ãã¾ãã
// æ°ãããã¿ã³è¦ç´ ã使 let btn = document.createElement("button"); // ãã¿ã³ã®ããã¹ããè¨å® btn.innerHTML = "Click me"; // ãã¿ã³ã«ã¯ãªãã¯ã¤ãã³ãã®ãã³ãã©ã¼ãå²ãå½ã¦ã btn.onclick = () => { alert("ãã¿ã³ãã¯ãªãã¯ããã¾ãã!!"); }; // ãã¿ã³ãbodyè¦ç´ ã«è¿½å document.body.appendChild(btn);
See the Pen JavaScript ãã¿ã³ä½æ onclickãããã㣠by dev.K | Webã¢ããªéçºè (@enjinia_f) on CodePen.
DOMããããã£ã使ç¨ãã¦ã¤ãã³ããã³ãã©ã¼ãå²ãå½ã¦ããã¨ãã§ãã¾ãã
ã¤ãã³ããã³ãã©ã¼ãHTML屿§ã使ç¨ãã¦å²ãå½ã¦ããã¦ããå ´åããã©ã¦ã¶ã¯ãããèªã¿åãã屿§ã®å 容ããæ°ãã颿°ã使ãããããDOMããããã£ã«æ¸ãè¾¼ã¿ã¾ãã
ããã¦ãã¦ã¼ã¶ã¼ããã¿ã³ãã¯ãªãã¯ããã¨ãHTMLã®onclickã¤ãã³ã屿§ãæ©è½ãã¾ãã
ã¾ããã¤ãã³ããªã¹ãã¼ã®è¿½å ã«ã¯ãaddEventListenerã¡ã½ããã使ç¨ãããã¨ãã§ãã¾ãã
ãã®ã¡ã½ããã¯ãç¹å¥ãªå¶ç´ããªããããããæè»ã«ã¤ãã³ããã³ãã©ã¼ãå²ãå½ã¦ããã¨ãã§ãã¾ãã
ãã®å¶ç´ã¯ã次ã®ã¹ãããã§è§£èª¬è´ãã¾ãã
// æ°ãããã¿ã³è¦ç´ ã使 let btn = document.createElement("button"); // ãã¿ã³ã®ããã¹ããè¨å® btn.innerHTML = "Click me"; // ãã¿ã³ã«ã¯ãªãã¯ã¤ãã³ãã®ãªã¹ãã¼ã追å btn.addEventListener("click", () => { alert("ãã¿ã³ãã¯ãªãã¯ããã¾ãã!!"); }); // ãã¿ã³ãbodyè¦ç´ ã«è¿½å document.body.appendChild(btn);
See the Pen JavaScript ãã¿ã³ä½æ onclickãããã㣠by dev.K | Webã¢ããªéçºè (@enjinia_f) on CodePen.
ä¸è¨ã®ã³ã¼ãã¯ãæ°ãããã¿ã³è¦ç´ ã使ããã¯ãªãã¯ã¤ãã³ãã®ãã³ãã©ã¼ã¾ãã¯ãªã¹ãã¼ãå²ãå½ã¦ããããbodyè¦ç´ ã«è¿½å ããæ¹æ³ã示ãã¦ãã¾ãã
ãã³ãã©ã¼ã使ç¨ãããããªã¹ãã¼ã使ç¨ãããã¯ãéçºè ã®å¥½ã¿ãç¶æ³ã«å¿ãã¦ç°ãªãã¾ãã
addEventListener()ã¨onclick
addEventListenerã¨onclickã¯ã両æ¹ã¨ãã¤ãã³ããå¦çããããã®æ¹æ³ã§ãããä½¿ãæ¹ã«ã¯éããããã¾ãã
onclickã¯ãHTML屿§ã§ãããããHTMLè¦ç´ ã¾ãã¯è¦ç´ å ã«ç´æ¥è¿½å ã§ãã¾ãã
䏿¹ãaddEventListenerã¯JavaScriptã§ä½¿ç¨ã§ãã¾ãã
onclickã¯ã1ã¤ã®ã¤ã³ã©ã¤ã³ã¤ãã³ãããå²ãå½ã¦ããããè¤æ°åæ¸ãè¾¼ãã¨ä¸æ¸ãããã¦ãã¾ãããã1ã¤ã®è¦ç´ ã«è¤æ°ã®onclickã追å ãããã¨ã¯ãå§ããã¾ããã
addEventListenerã使ç¨ããã¨ã1ã¤ã®è¦ç´ ã«è¤æ°ã®ã¤ãã³ããã³ãã©ãé©ç¨ãããã¨ãã§ããä»ã®ã¤ãã³ããã³ãã©ã䏿¸ããã¾ããã
以ä¸ã¯ãaddEventListenerã使ç¨ãã¦ãã³ãã©ã追å ããæ¹æ³ã®ä¾ã§ãã
const btn = document.createElement("button"); document.body.appendChild(btn); btn.innerHTML = "Click me"; btn.addEventListener("click", function () { alert("æåã®ã¯ãªãã¯åä½"); }, false ); btn.addEventListener("click", function () { alert("addEventListenerã§2åç®ã®ã¯ãªãã¯åä½ãè¡ãã"); }, false );
See the Pen JavaScript addEventListenerã¨onclick by dev.K | Webã¢ããªéçºè (@enjinia_f) on CodePen.
ãã®ä¾ã§ã¯ãåãã¤ãã³ãã«2ã¤ã®ãã³ãã©ã追å ããã¦ãããã¤ãã³ããçºçããé åºãå¶å¾¡ãããã¨ãã§ãã¾ãã
onclickã¯ãaddEventListenerã¨æ¯ã¹ã¦å¹æçã§è¿ éã§ããã1ã¤ã®è¦ç´ ã«è¤æ°ã®ã¤ãã³ãã追å ããå¿ è¦ãããå ´åã¯ãaddEventListenerã使ç¨ãããã¨ããå§ããã¾ãã
以ä¸ã¯ãonclickã使ç¨ãã¦ãã³ãã©ã追å ããæ¹æ³ã®ä¾ã§ãã
let btn = document.createElement("button"); btn.innerHTML = "Click me"; btn.onclick = function () { alert("æåã®ã¯ãªãã¯åä½"); } btn.onclick = function () { alert("2åç®ã®onclickãå®è¡ããã1åç®ã¯å®è¡ãããªã"); } document.body.appendChild(btn);
See the Pen JavaScript ãã¿ã³ä½æ onclickè¤æ° by dev.K | Webã¢ããªéçºè (@enjinia_f) on CodePen.
ãã®ä¾ã§ã¯ã1ã¤ã®ã¤ãã³ããã³ãã©ãã追å ããã¦ããããè¦ç´ ã«è¤æ°ã®onclickã追å ãããã¨ã¯ãå§ããã¾ããã
以ä¸ã®ããã«ã両æ¹ã®æ¹æ³ã«ã¯é·æã¨çæãããã¾ãããaddEventListenerã使ç¨ãããã¨ããå§ããã¾ãã
ãã ããå¤ããã©ã¦ã¶ã使ç¨ãã¦ããå ´åã¯ãonclickã使ç¨ãããã¨ã«ãªãããããã¾ããã
ã¤ãã³ããã³ãã©ãåé¤
JavaScriptã«ããã¦ãaddEventListenerã¡ã½ããã使ç¨ãã¦ã¤ãã³ããªã¹ãã¼ãç»é²ãããã¨ãã§ãã¾ãã
ããããã¤ãã³ããªã¹ãã¼ãä¸è¦ã«ãªã£ãå ´åã¯ãremoveEventListenerã使ç¨ãã¦ãç»é²ããã¤ãã³ããªã¹ãã¼ãåé¤ãããã¨ãã§ãã¾ãã
以ä¸ã®ã³ã¼ãã§ã¯ãaddEventListenerã使ç¨ãã¦ãã¯ãªãã¯ã¤ãã³ããã³ãã©ãå®ç¾©ããåé¤ããæ¹æ³ã示ãã¦ãã¾ãã
function clickHandler() { alert("Clicked!"); removeClickEvent(); } const btn = document.createElement("button"); document.body.appendChild(btn); btn.innerHTML = "Click me"; btn.addEventListener("click", clickHandler); function removeClickEvent() { setTimeout(() => { const buttonClicked = clickHandler; btn.removeEventListener("click", buttonClicked); alert("ã¤ãã³ããªã¹ãã¼ãåé¤ããã¾ãã"); }, 2000); }
See the Pen JavaScript addEventListenerã®åé¤ by dev.K | Webã¢ããªéçºè (@enjinia_f) on CodePen.
ä¸è¨ã§ã¯ããã¿ã³ãã¯ãªãã¯ãããã¨ãclickHandler颿°ãå®è¡ãããã¢ã©ã¼ãã表示ããã¾ãã
ããã¦ãremoveClickEvent颿°ãå¼ã³åºããã¾ãã
removeClickEvent颿°ã§ã¯ã2ç§å¾ã«ã¤ãã³ããªã¹ãã¼ãåé¤ãããå度ã¢ã©ã¼ãã表示ããã¾ãã
ãã®ã³ã¼ãã§ã¯ãremoveEventListenerã¡ã½ããã使ç¨ãã¦ããã¿ã³ããclickã¤ãã³ãã®ãªã¹ãã¼ãåé¤ãã¦ãã¾ãããã®ããã2ç§å¾ã«ãã¿ã³ãã¯ãªãã¯ãã¦ããããä¸åº¦ã¤ãã³ããçºç«ããªãããã«ãªãã¾ãã
removeEventListener()ãå¼ã³åºãéã«ã¯ãaddEventListener()ã§ä½¿ç¨ãã颿°ã¸ã®åç §ãæ¸¡ãå¿ è¦ãããã¾ããã¤ã¾ããæåã«è¿½å ããã颿°ã«ã¢ã¯ã»ã¹ã§ããå¿ è¦ãããã¾ãã
ãã颿°ãç¡å颿°ã¨ãã¦å®ç¾©ããã¦ããå ´åãremoveEventListener()ã¯ä½¿ç¨ã§ãã¾ããã
ããããç¡å颿°ã颿°å¼ã¨ãã¦å®ç¾©ããã¦ããå ´åã¯ã夿°åãæ¸¡ãã¦ã¤ãã³ããåé¤ãããã¨ãã§ãã¾ãã
ã¾ããaddEventListener()ã§é¢æ°ã夿°ã«ä¿åããªãå ´åããã®é¢æ°ãåé¤ãããã¨ã¯ã§ãã¾ããã
ã¤ãã³ããªã¹ãã¼ãåé¤ããã«ã¯ã颿°ã夿°ã«ä¿åããå¿ è¦ãããã¾ãã
ä¾ãã°ã以ä¸ã®ããã«é¢æ°ã夿°ã«ä¿åãããã¨ãã§ãã¾ãã
// ã¯ãªãã¯ã¤ãã³ããã³ãã©ã®å®ç¾© function clickHandler() { const btn = document.createElement('button'); // ç¡å颿°ã§ã¯ãªãã¯ã¤ãã³ããªã¹ãã¼ã追å ãã btn.addEventListener('click', function buttonClicked(e) { console.log('clicked!'); }) } // ã¯ãªãã¯ã¤ãã³ãã®åé¤ function removeClickEvent() { // ã¤ãã³ããªã¹ãã¼ãåé¤ã§ããªããã¨ã«æ³¨æï¼ // ç¡å颿°ã使ç¨ãã¦ãããããåé¤ã§ãã¾ããã btn.removeEventListener('click', buttonClicked); } // 注æ: 颿°ã夿°ã«ä¿åããªãå ´åãåé¤ãããã¨ãã§ãã¾ããã // ã¤ãã³ããªã¹ãã¼ãåé¤ããã«ã¯ã颿°ã夿°ã«ä¿åããå¿ è¦ãããã¾ãã // ä¾: const buttonClicked = function(e) { console.log('clicked!') }; // ã¾ãã¯ã颿°å¼ã使ã£ã¦åé¤ã§ãã¾ããä¾: btn.addEventListener('click', handleClick);
ææ°ã®ãã©ã¦ã¶ã§ã¯ãDOMè¦ç´ ãåé¤ãããã¨ããã®ã¤ãã³ããªã¹ãã¼ãJavaScriptã®ã¡ã¢ãªããåé¤ããã¾ãã
ãã ããè¦ç´ ãåç §ããªã¼ã®å ´åã«ã®ã¿çºçãããã¨ã«æ³¨æãã¦ãã ããã
ã¤ã¾ããåç §ããªããªããGarbage collection(ã¬ãã¼ã¸ã³ã¬ã¯ã·ã§ã³)ãå¯è½ã«ãªãã¾ãã
ã¬ãã¼ã¸ã³ã¬ã¯ã·ã§ã³(GC)ã¯ãJavaScriptã§ä½¿ç¨ãããã¡ã¢ãªç®¡çã·ã¹ãã ã§ãããèªåã§ç§ãã¡ã®ç®ã«ã¯è¦ããªãããã«è£å´ã§è¡ããã¦ãããä¸è¦ãªãªãã¸ã§ã¯ãã夿°ãããå ´åãããããèªåçã«åé¤ãã¾ãã
ãã®çµæãåé¤ãããDOMè¦ç´ ã«é¢é£ããã¤ãã³ããªã¹ãã¼ãã¡ã¢ãªããåé¤ããã¾ããããã«ãããä¸è¦ãªã¡ã¢ãªã®å æãåé¿ããããã©ã¼ãã³ã¹ã®åä¸ãæå¾ ã§ãã¾ãã
ä¸è¦ãªã¡ã¢ãªã®å æãåé¿ãããã¨ã¯ãæãéè¦ã§ãã
ã¤ã¾ããä¸è¦ãªãªãã¸ã§ã¯ãã夿°ãã¡ã¢ãªã«æ®ãããã¡ã¢ãªä½¿ç¨éãæå°éã«æãããã¾ãã
ãã®ãããªã¡ã¢ãªã®åé¿ã¯ãã¢ããªã±ã¼ã·ã§ã³ã®ããã©ã¼ãã³ã¹åä¸ã«ã¤ãªããã¾ãã
ã¡ã¢ãªä½¿ç¨éãéå°ã«ãªãã¨ãã·ã¹ãã ã®åä½ãé ããªã£ãããå¿çæ§ãä½ä¸ãããããå¯è½æ§ãããã¾ããã¬ãã¼ã¸ã³ã¬ã¯ã·ã§ã³ã«ãã£ã¦ãä¸è¦ãªã¡ã¢ãªãèªåçã«è§£æ¾ããããããã¢ããªã±ã¼ã·ã§ã³ã¯å¹ççã«ã¡ã¢ãªãå©ç¨ãããã¨ãã§ãã¾ãã
ããã«ãããã¹ã ã¼ãºãªå®è¡ãé«éãªå¿çãå¯è½ã¨ãªãã¾ãã
ã¯ãªãã¯æ°ã®å¶å¾¡
addEventListenerã¯ã¯ãªãã¯æ°ãå¶å¾¡ãããã¨ãã§ãã¾ãã
以ä¸ã¯ãaddEventListenerã使ç¨ãã¦ã¯ãªãã¯æ°ãå¶å¾¡ããæ¹æ³ã®ãµã³ãã«ã³ã¼ãã§ãã
ãã®ã¡ã½ããã«ã¯ãã¤ãã³ããªã¹ãã¼ãå®è¡ãããåæ°ãæ±ºå®ããããã®ãªãã·ã§ã³ã¨ãã¦ãonceã¨ãããã¼ã«å¤ãããã¾ãã
onceãtrue
ã«è¨å®ããã¦ããå ´åãã¤ãã³ããªã¹ãã¼ã¯æåã®å®è¡å¾ã«èªåçã«åé¤ããã¾ãã
// ãã¿ã³ã使 const btn = document.createElement("button"); // ãã¿ã³ãããã¥ã¡ã³ãã«è¿½å document.body.appendChild(btn); // ãã¿ã³ã®ã©ãã«ãè¨å® btn.innerHTML = "Click me"; // onclickããããã£ã使ã£ã¦ãæ¯åå®è¡ããã¤ãã³ãã追å btn.onclick = function () { alert("æ¯åå®è¡ããã¾ã"); }; // ã¤ãã³ããªã¹ãã¼ã追å ãã¦ãååã®ã¯ãªãã¯æã®ã¿å®è¡ããããã«è¨å® function sayOnce() { alert("ååã®ä¸åº¦ã®ã¿"); } btn.addEventListener("click", sayOnce, { once: true });
See the Pen JavaScript addEventListeneråæ°ã®å¶å¾¡ by dev.K | Webã¢ããªéçºè (@enjinia_f) on CodePen.
ãã®ã³ã¼ãã§ã¯ã btn
è¦ç´ ã«ã¯ãªãã¯ã¤ãã³ãã追å ãã¦ãã¾ãã
sayOnce
颿°ã¯ãååã®ã¯ãªãã¯æã«ã®ã¿å®è¡ããã¾ãã
2åç®ä»¥éã®ã¯ãªãã¯ã§ã¯ãonclickããããã£ã«ãã£ã¦è¿½å ãããã¤ãã³ãã®ã¿ãå®è¡ããã¾ãã
ããã¯ãonceãªãã·ã§ã³ã true
ã«è¨å®ããã¦ãããããã¤ãã³ããªã¹ãã¼ãèªåçã«åé¤ãããããã§ãã
å ±éã®ã¤ãã³ã
ã¤ãã³ããªã¹ãã¼ã«ã¤ãã¦å¦ç¿ãã¾ããããJavaScriptã«ã¯ããã«å¤ãã®ã¤ãã³ããããã¾ãã
ä¸è¨ã®æãä¸è¬çãªã¤ãã³ãã®ããã¤ãã«ã¤ãã¦èª¬æãã¾ãã
ãã¦ã¹ã¤ãã³ã
ãã¦ã¹ã¤ãã³ãã¯ãæãé »ç¹ã«ä½¿ç¨ãããã¤ãã³ãã® 1 ã¤ã§ãã
ãããã¯ããã¦ã¹ã®ãã¿ã³ã®ã¯ãªãã¯ãã¾ãã¯ãã¦ã¹ ãã¤ã³ã¿ã¼ã®ããã¼ãªã³ã°ã¨ç§»åãä¼´ãã¤ãã³ããæãã¾ãã
ãããã®ã¤ãã³ãã¯ãã¿ããããã¤ã¹ã§ã®åçã®ã¢ã¯ã·ã§ã³ã«ã対å¿ãã¦ãã¾ãã
event | æ¦è¦ |
---|---|
click | è¦ç´ ä¸ã§ãã¦ã¹ãæ¼ããã¦é¢ãããã¨ãã«çºçãã¾ã |
dblclick | è¦ç´ ã2 åã¯ãªãã¯ãããã¨ãã«çºçãã¾ã |
mouseenter | ãã¤ã³ã¿ãè¦ç´ ã«å ¥ã£ãã¨ãã«çºçãã¾ã |
mouseleave | ãã¤ã³ã¿ãè¦ç´ ãé¢ããã¨ãã«çºçãã¾ã |
mousemove | ãã¤ã³ã¿ãè¦ç´ å ãç§»åãããã³ã«çºçãã¾ã |
ãã©ã¼ã ã¤ãã³ã
ãã©ã¼ã ã¤ãã³ãã¯ãinput
è¦ç´ ã®é¸æã¾ãã¯é¸æè§£é¤ããã©ã¼ã ã®éä¿¡ãªã©ããã©ã¼ã ã«é¢é£ããåä½ã§ãã
event | æ¦è¦ |
---|---|
submit | ãã©ã¼ã ãéä¿¡ãããã¨ãã«çºçãã¾ã |
focus | è¦ç´ (å ¥åãªã©) ããã©ã¼ã«ã¹ãåãåãã¨çºçãã¾ã |
blur | è¦ç´ ããã©ã¼ã«ã¹ã失ã£ãã¨ãã«çºçãã¾ã |
ãã¼ãã¼ãã¤ãã³ã
ãã¼ãã¼ãã¤ãã³ãã¯ããã¼ãæ¼ãããã¼ãæã¡ä¸ããããã¼ãæ¼ãç¶ãããªã©ã®ãã¼ãã¼ãæä½ãå¦çããããã«ä½¿ç¨ããã¾ãã
event | æ¦è¦ |
---|---|
keydown | ãã¼ãæ¼ãããã¨ãã« 1 åçºç«ãã |
keyup | ãã¼ãé¢ãããã¨ãã« 1 åçºç«ãã |
keypress | ãã¼ãæ¼ãã¦ããéãé£å° |
ãã¼ãã¼ãã¤ãã³ãã«ã¯ãåã ã®ãã¼ã«ã¢ã¯ã»ã¹ããããã®ç¹å®ã®ããããã£ãããã¾ãã
Event objectãã©ã¡ã¼ã¿ã¼ãã¤ãã³ããªã¹ãã¼ã«æ¸¡ãããã¨ãçºçããåä½ã«é¢ããè©³ç´°ãªæ å ±ã«ã¢ã¯ã»ã¹ã§ãã¾ãã
ãã¼ãã¼ããªãã¸ã§ã¯ãã«é¢é£ãã2ã¤ã®ããããã£ã«ã¯ã key
ã¨code
ãããã¾ãã
document.addEventListener('keydown', event => { console.log('key: ' + event.key); console.log('code: ' + event.code); });
ã³ã³ã½ã¼ã«ã§ENTER
ãæ¼ãã¨ãä»åº¦ã¯ãã¼ãã¼ãã®ãã¼ãæ¼ããã¨ãã§ãã¾ãã
Event object
Eventãªãã¸ã§ã¯ãã¯ãJavaScriptã®Web APIã§ããããã©ã¦ã¶ã§çºçããæ§ã ãªã¤ãã³ãã«é¢ããæ å ±ãæä¾ãã¾ãã
ãã®ãªãã¸ã§ã¯ãã¯ããã¹ã¦ã®ã¤ãã³ããã¢ã¯ã»ã¹ã§ããããããã£ã¨ã¡ã½ããã§æ§æããã¦ãã¾ãã
ãã¨ãã°ããã¿ã³ãã¯ãªãã¯ãããã¨ãã«çºçããã¤ãã³ãã¯ãEventãªãã¸ã§ã¯ããä»ãã¦ã¢ã¯ã»ã¹ã§ãã¾ãã
Eventãªãã¸ã§ã¯ãã¯ãã¤ãã³ããªã¹ãã¼é¢æ°ãä»ãã¦ãã©ã¡ã¼ã¿ã¨ãã¦æ¸¡ããã¾ãã
é常ãevent
ã¾ãã¯e
ã¨ããååã§åç
§ããã¾ãã
以ä¸ã¯ãHTMLã®ãã³ãã©ã§Eventãªãã¸ã§ã¯ãã使ç¨ããä¾ã§ãã
<button type="button" onclick="alert(event.type)" value="Event type">Click me</button>
ãã®HTMLã®ä¾ã§ã¯ãã¯ãªãã¯ã¤ãã³ããçºçããã¨ãevent.typeããããã£ã使ç¨ããã¾ãã
JavaScriptã®ã³ã¼ãã¨ãã¦ãä¸è¨ã®HTMLã¯ä»¥ä¸ã®ããã«æ¸ããã¨ãã§ãã¾ãã
const button = document.querySelector('button'); button.addEventListener('click', function(event) { alert(event.type); });
ãã®ã³ã¼ãã§ã¯ãquerySelectorã¡ã½ããã使ç¨ãã¦ãHTMLã®<button>
è¦ç´ ãåå¾ããããã«å¯¾ãã¦clickã¤ãã³ãã®ãªã¹ãã¼ã追å ãã¾ãã
ãªã¹ãã¼é¢æ°ã®å¼æ°ã«ã¯ãã¤ãã³ããªãã¸ã§ã¯ããæ¸¡ããã¾ãã
ãã®ä¾ã§ã¯ãtevent.typeããããã£ã使ç¨ãããã¤ãã³ãã®ç¨®é¡ãã¢ã©ã¼ãã§è¡¨ç¤ºããã¾ãã
HTMLã®onclick屿§ã«ãããã³ãã©ã¼ã¯ãJavaScriptã®addEventListenerã¡ã½ããã使ç¨ãã¦ãåãããã«è¨è¿°ãããã¨ãã§ãã¾ãã
<button type="button" onclick="alert(event.type)" value="Event type">Click me</button>
const button = document.querySelector('button'); button.addEventListener('click', function(event) { alert(event.type); });
ãã®ããã«ãJavaScriptã®ã³ã¼ãã§HTMLã®ã¤ãã³ããã³ãã©ã¼ãç½®ãæãããã¨ãã§ãã¾ãã
ã¾ããã¤ãã³ããªãã¸ã§ã¯ãã使ç¨ãããã¨ã§ãã¤ãã³ããã©ã®ããã«çºçãããã«é¢ãã詳細æ å ±ãåå¾ã§ãã¾ãã
ä¸è¨ã®ãã¦ã¹ã¤ãã³ãã§ã¯ãã©ã®ãã¦ã¹ãã¿ã³ãæ¼ããããã確èªã§ãã¾ãã
const link = document.getElementById('my-link') link.addEventListener('mousedown', event => { // ãã¦ã¹ãã¿ã³ãæ¼ããã console.log(event.button) //0=left, 2=right })
以ä¸ã«ããã¦ã¹ã¤ãã³ãããã¤ã³ã¿ã¼ã¤ãã³ãããåå¾ã§ããæ å ±ãå«ããä¾ã示ãã¾ãã
const link = document.getElementById('my-link'); link.addEventListener('mousedown', event => { // ãã¦ã¹ãã¿ã³ãæ¼ããã if (event.button === 0) { console.log('å·¦ãã¿ã³ãæ¼ããã¾ãã'); } else if (event.button === 2) { console.log('å³ãã¿ã³ãæ¼ããã¾ãã'); } else { console.log('ãã®ä»ã®ãã¿ã³ãæ¼ããã¾ãã'); } }); const btn = document.createElement('button'); document.body.appendChild(btn); btn.innerHTML = 'Click me'; btn.onclick = function(event) { alert(event.type + ' at ' + event.currentTarget); alert('value: ' + event.clientX + ':' + event.clientY); };
ããã§ã¯ãmousedownã¤ãã³ãã使ã£ã¦ããã¦ã¹ãã¿ã³ãæ¼ãããã¨ãã®å¦çãè¡ã£ã¦ãã¾ãã
event.buttonããããã£ã¯ãæ¼ããããã¦ã¹ãã¿ã³ã®çªå·ãè¿ãã¾ãã
ãã ãããã©ã¦ã¶ã«ãã£ã¦çªå·ãç°ãªãå ´åããããããããã«å¿ãã¦å¤å®ããå¿ è¦ãããã¾ãã
å·¦ã¯ãªãã¯ã¯0ãå³ã¯ãªãã¯ã¯2ã§ãã
ã¾ãããã¤ã³ã¿ã¼ã¤ãã³ãããã¯ããã¦ã¹ãã¤ã³ã¿ã¼ã®åº§æ¨ãåå¾ã§ãã¾ãã
event.clientXããã³event.clientYããããã£ã¯ããã©ã¦ã¶ã¼ã¦ã£ã³ãã¦å ã§ã®ãã¦ã¹ãã¤ã³ã¿ã¼ã®ç¸å¯¾çãªåº§æ¨ãè¿ãã¾ãã
ã¤ãã³ãã®ãããªã³ã°ã«ã¤ãã¦
bubbling(ãããªã³ã°)ã®åçã¯åç´ã§ãã
bubbling(ãããªã³ã°)ã¯ãå å´ã®è¦ç´ ããé æ¬¡ä¼æããã¨ããæ§è³ªã«ç±æ¥ãã¦ãã¾ãã
ã¤ãã³ããç¹å®ã®è¦ç´ ã§çºçããå ´åããã®ã¤ãã³ãã¯ãã®è¦ç´ ããå§ã¾ãããã®è¦ç´ ãå«ã親è¦ç´ ãããã«ã¯ä¸ä½ã®è¦ç´ ã«é æ¬¡ä¼æãã¾ãã
ãã®ä¼æã®æ§åããæ°´ä¸ã®æ³¡ãä¸ã«æµ®ãã³ä¸ããï¼ããã«ããï¼ããã«è¦ãããã¨ããããã®ç¨èªã使ããã¦ãã¾ãã
ä¾ãã°ããã¿ã³ãã¯ãªãã¯ãããå ´åãã¯ãªãã¯ã¤ãã³ãã¯ãã¿ã³è¦ç´ ã§çºçãããã®å¾ããã¿ã³ãå å«ãã親è¦ç´ ãããã«ã¯ä¸ä½ã®è¦ç´ ã¾ã§é 次ã¤ãã³ãã伿ãã¾ãã
ãã®ãããªã³ã°ã®æ§è³ªãå©ç¨ãããã¨ã§ã親è¦ç´ ãä¸ä½ã®è¦ç´ ã§ã¤ãã³ããæ¤ç¥ãããå¦çããããããã¨ãå¯è½ã«ãªãã¾ãã
ãã®ããã»ã¹ã¯ããã£ããã£ãªã³ã°ãã§ã¼ãºã¨ãããªã³ã°ãã§ã¼ãºã®2ã¤ã®ãã§ã¼ãºã§æ§æããã¦ãã¾ãã
ãã£ããã£ãªã³ã°ãã§ã¼ãºã¯ãã«ã¼ãè¦ç´ ããå§ã¾ãã親è¦ç´ ã«é æ¬¡ä¼æãã¦ããã¾ãã
次ã«ãã¤ãã³ããçºçããè¦ç´ ã§ããã¿ã¼ã²ãããã§ã¼ãºãå®è¡ããã¾ãã
æå¾ã«ããããªã³ã°ãã§ã¼ãºãå®è¡ããã¾ãã
ãã®ãã§ã¼ãºã§ã¯ãã¿ã¼ã²ããè¦ç´ ããå§ã¾ãã親è¦ç´ ãç¥å è¦ç´ ã«é æ¬¡ä¼æãã¦ããã¾ãã
以ä¸ã®ã³ã¼ããä¾ã«èãã¦ã¿ã¾ãããã
<form onclick="alert('form')">FORM <div onclick="alert('div')">DIV <p onclick="alert('p')">P</p> </div> </form>
ãã®å ´åã<p>
è¦ç´ ãã¯ãªãã¯ãããã¨ãã以ä¸ã®ãããªé åºã§ã¤ãã³ãã伿ãã¾ãã
ã» ãã£ããã£ãªã³ã°ãã§ã¼ãºï¼
ã» document
ã» <html>
ã» <body>
ã» <form>
ã» <div>
ã» <p>
ã» ã¿ã¼ã²ãããã§ã¼ãºï¼ã¤ãã³ããçºçããè¦ç´ ï¼ããã§ã¯<p>
ï¼ã§å®è¡ãããã
ã» ãããªã³ã°ãã§ã¼ãºï¼
ã» <p>
ã» <div>
ã» <form>
ä¸è¬çã«ãã»ã¨ãã©ã®ã¤ãã³ãã¯ããã£ããã£ãªã³ã°ãã§ã¼ãºããã¹ããããã¦ãç´ã¡ã«ããããªã³ã°ãã§ã¼ãºãã«é²ã¿ã¾ãã
ãã ããfocusã¤ãã³ãã«é¢ãã¦ã¯ãé常ã¯ããããªã³ã°ãã§ã¼ãºããã¹ãããããã¾ãããã¤ãã³ããã§ã¼ãºãããã£ããã£ãªã³ã°ãã§ã¼ãºãããå§ãããã¨ãã§ãããããããããªã³ã°ãã§ã¼ãºãã«å ¥ããã¨ãããã¾ãã
ãã®ããã«ãHTMLè¦ç´ ã®ã¤ãã³ããçºçããã¨ããã£ããã£ãªã³ã°ãã§ã¼ãºã¨ãããªã³ã°ãã§ã¼ãºã«ãã£ã¦è¦ªè¦ç´ ãç¥å è¦ç´ ã«é æ¬¡ä¼æãã¦ããã¾ãã
æå¾ã«
JavaScriptã«ããã¦ãã¤ãã³ãã¯Webãµã¤ãã§çºçããåä½ãæãã¾ãã
ã¦ã¼ã¶ã¼ãè¡ã£ãåä½ã«å¿çãããã¨ãã§ããããã«ãªãã¨ãJavaScriptã¯ã¤ã³ã¿ã©ã¯ãã£ãã§åçã«ãªãã¾ãã
ã¤ãã³ããªã¹ãã¼ãè¨å®ããæ¹æ³ã¨ãã¦ãaddEventListenerã使ç¨ãããã¨ãä¸è¬çã§å ç¢ãªæ¹æ³ã§ãã
ãã®ã¡ã½ããã¯ãã¤ãã³ãã®ç¨®é¡ãæå®ã§ãã¾ãã
ä¾ãã°ãmousedownãmouseupãmousemoveãclickãdblclickãªã©ã®ç°ãªããã¦ã¹ã¤ãã³ããããã¾ãã
ã¤ãã³ãã¿ã¤ããæå®ãããã¨ã§ããã¾ãã¾ãªã¿ã¤ãã³ã°ã§ãã³ãã©ãå®è¡ãããã¨ãã§ããæè»æ§ãå ¼ãåãã¦ãã¾ãã
䏿¹ãonclickã¯1ã¤ã®ã¯ãªãã¯ã¤ãã³ããç°¡æ½ã«å¦çããéã«ä¾¿å©ã§ãããaddEventListenerã®æ¹ãæ±ç¨æ§ãé«ããä¸è¬çã«å¥½ã¾ãã¾ãã
Reactãå°å ¥ããå ´åã«ããaddEventListenerã使ç¨ãããã¨ãæ¨å¥¨ããã¾ãã
ããã¯ãReactãã¤ãã³ãã·ã¹ãã ãåå®è£ ããããä¸è²«æ§ã®ããã¤ãã³ãå¦çãæä¾ããããã§ãã
Webãµã¤ãã§çºçãããã¾ãã¾ãªã¤ãã³ãã«å¯¾ãã¦ãé©åãªã¤ãã³ããã³ãã©ãè¨å®ãããã¨ã§ãã¦ã¼ã¶ã¼ãWebãã¼ã¸ã¨å¯¾è©±ã§ããããã«ãªãã¾ãã
ä¾ãã°ãã¯ãªãã¯ãããã¼ãªã³ã°ããã©ã¼ã ã®éä¿¡ããã¼ã¸ã®èªã¿è¾¼ã¿ããã¼ãã¼ãã®ãã¼ã®æ¼ä¸ãªã©ãããã¾ãã
JavaScriptã使ç¨ãã¦ã¤ãã³ããå¦çãããã¨ã§ãWebãµã¤ããããåçãã¤ã¤ã³ã¿ã©ã¯ãã£ãã«ãªãã¾ãã
ããã«ãããã¦ã¼ã¶ã¼ã¯ããè±ããªä½é¨ãå¾ããã¨ãã§ãã¾ãã
æ¬æ¥ã¯ä»¥ä¸ã¨ãªãã¾ãã
æå¾ã¾ã§èªãã§é ããããã¨ããããã¾ãã
ãã®è¨äºãå½¹ã«ç«ã£ãããããã¯ãã¼ã¯ãä»ã®æ¹ã«ãå ±æãã¦é ããã¨å¬ããã§ãã