javascript - (JS)未捕获的类型错误:无法读取未定义的属性“删除”
问题描述
我正在做 JavaScript30 挑战(JS Drum kit)的第一个练习,我遇到了我的第一个错误。
未捕获的类型错误:无法在 removeTransition 读取未定义的属性“删除”(trial.html:73)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>JS Drum Kit</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<div class="keys">
<div data-key="65" class="key">
<kbd>A</kbd>
<span class="sound">clap</span>
</div>
<div data-key="83" class="key">
<kbd>S</kbd>
<span class="sound">hihat</span>
</div>
<div data-key="68" class="key">
<kbd>D</kbd>
<span class="sound">kick</span>
</div>
<div data-key="70" class="key">
<kbd>F</kbd>
<span class="sound">openhat</span>
</div>
<div data-key="71" class="key">
<kbd>G</kbd>
<span class="sound">boom</span>
</div>
<div data-key="72" class="key">
<kbd>H</kbd>
<span class="sound">ride</span>
</div>
<div data-key="74" class="key">
<kbd>J</kbd>
<span class="sound">snare</span>
</div>
<div data-key="75" class="key">
<kbd>K</kbd>
<span class="sound">tom</span>
</div>
<div data-key="76" class="key">
<kbd>L</kbd>
<span class="sound">tink</span>
</div>
</div>
<audio data-key="65" src="sounds/clap.wav"></audio>
<audio data-key="83" src="sounds/hihat.wav"></audio>
<audio data-key="68" src="sounds/kick.wav"></audio>
<audio data-key="70" src="sounds/openhat.wav"></audio>
<audio data-key="71" src="sounds/boom.wav"></audio>
<audio data-key="72" src="sounds/ride.wav"></audio>
<audio data-key="74" src="sounds/snare.wav"></audio>
<audio data-key="75" src="sounds/tom.wav"></audio>
<audio data-key="76" src="sounds/tink.wav"></audio>
<script>
window.addEventListener('keydown', function(e) {
const audio = document.querySelector(`audio[data-key="${e.keyCode}"]`)
const key = document.querySelector(`.key[data-key="${e.keyCode}"]`)
if(!audio) return; // stop function from running
audio.currentTime = 0; // rewind to the start
audio.play();
key.classList.add('playing');
});
function removeTransition(e) {
if(e.propertyName !== 'transform') return; // skip it if it's not a transform
this.classList.remove('playing');
}
const keys = document.querySelectorAll('.key');
keys.forEach(key => addEventListener('transitionend', removeTransition));
</script>
</body>
</html>
我一直在与视频教程并排进行,再次输入它,但我仍然不明白为什么它对我不起作用。
解决方案
推荐阅读
- ios - 如何将带有 transferUserInfo 的字典传输到 Apple Watch?
- node.js - Cheerio 选择具有多个类的元素,用空格分隔
- reactjs - ReactJS DropZone 浏览器尝试在放置时打开文件
- reactjs - 在 React Leaflet 中使用 react-leaflet-geosearch:无法读取属性 addControl
- javascript - 类型错误:无法读取 null 的属性“用户”
- html - 为什么我在 CSS 中旋转的 div 的边框周围有一个模糊的边框?
- php - 显示来自 wp 插件表单提交的自定义错误消息
- python - OSX Finder中的“随机排序”将kMDItemFinderComment设置为文件夹中每个文件的随机哈希?
- javascript - firebase/firestore 中的时间戳
- python - 将嵌套字典转换为元组 python