質問: throttle(onClick, 3000); blockP.addEventListener('click', boxClick, false); /*ここまで*/ ```
回答: ごめんなさい。 onClick(e)のeに何が入ってきてほしいと思っているのかが分からないため回答は示せません。 現在エラーになっている理由だけお伝えします。 ``` let blockP = document.getElementById('view_1'); let throttle = function (th, interval){ let lastTime = Date.now() - interval return function(){ if((lastTime + interval) < Date.now()){ lastTime = Date.now() // ポイント1 th() } } } function onClick(e) { //出現させるブロックの位置、大きさ、落ちる速度 let width = height = Math.floor(Math.random() * 80 + 30); // ポイント2 let x = e.clientX - blockP.offsetLeft - width / 2; let y = 10; let gravity = 5; let boxColor = colors[Math.floor(Math.random() * colors.length)]; shapes.push(new Shape(x, y, width, height, gravity, boxColor)); } // ポイント3 let boxClick = throttle(onClick, 3000); // ポイント4 blockP.addEventListener('click', boxClick, false); /*ここまで*/ ``` 原因 上記コード内「ポイント1」でthに引数を渡していないこと 説明 ソースの流れを追うと 1. ポイント4で`blockP`クリック時にboxClickを呼び出すように設定 2. boxClickはthrottleメソッドの第一引数にonClickを指定している(ポイント3) 3. ポイント1でそのonClickを呼び出しているが引数を渡していない 4. 3で呼び出されたonClickは第一引数が指定されていないのでeが`undefined`となる 5. ポイント2で`e.clientX`としているが`undefined`に`clientX`は存在しないのでエラーになる となります。