前提・実現したいこと
一定時間後イベントを遅らせて発火させるためのプログラムを書いてみました。
しかし、最終的に発火させるハンドラーに渡されるイベントオブジェクトから
event.target 要素が取得できません。是非そこから取得する方法を知りたいのです。
ソースコード
javascript
1<!DOCTYPE html> 2<meta charset="UTF-8"> 3<title>イベントを遅らせたい</title> 4 5<body> 6<input type="text" name="inp"><br /> 7<input type="text" name="inp"><br /> 8 9 10<script> 11 12class EventDelay { 13 14 constructor (type, target, delayTime) { 15 this.type = type; 16 this.target = target; 17 this.delayTime = delayTime; 18 this.timerId = null; 19 this.event = null; 20 } 21 22 23 dispatch () { 24 this.timerOff (); 25 this.target.dispatchEvent (this.event); 26 } 27 28 29 timerOff () { 30 if (this.timerId) 31 clearTimeout (this.timerId); 32 this.timerId = null; 33 } 34 35 36 handleEvent (event) { 37 this.timerOff (); 38 39 if (event.isTrusted) { 40 this.event = event; 41 event.stopImmediatePropagation (); 42 this.timerId = setTimeout (this.dispatch.bind (this), this.delayTime); 43 } 44 } 45 46 47 static create (type, target = document, delayTime = 333, bf = false) { 48 const obj = new this (type, target, delayTime); 49 target.addEventListener (type, obj, bf); 50 target = null; 51 return obj; 52 } 53 54} 55 56//----------------------------------------------- 57 58//document に対する inputイベントを 333m/s 遅らせる 59EventDelay.create ('input'); 60 61//----------------------------------------------- 62 63document.addEventListener ('input', event=> { 64 //変数 event には、イベントオブジェクトのようでそうではない。 65 let e = event.target; 66 console.log (e.value);// value値を取得したい。 67}, false); 68 69 70 71</script>
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。