【发布时间】:2017-02-21 10:53:32
【问题描述】:
我是 JavaScript 的初学者,我正在关注 javascript30.com 的 30 天任务之一,并第一次看到 document.querySelector()。
阅读这个MDN - Query Selector,我很清楚它的作用,但是我无法弄清楚它是如何在代码中使用的,尤其是:
这里的美元符号是什么意思? (我知道这不是这种语言的特定含义,这让我感到困惑)
-
一般来说,我不明白选择括号 () 之间发生了什么,这个:
const audio = document.querySelector(`audio[data-key="${e.keyCode}"]`);
谁能帮帮我?
谢谢!
这是构建架子鼓的代码:
function playSound(e) {
const audio = document.querySelector(`audio[data-key="${e.keyCode}"]`);
const key = document.querySelector(`div[data-key="${e.keyCode}"]`);
if (!audio) return;
audio.currentTime = 0;
audio.play();
key.classList.add('playing'); //add class defined in css
}
function removeTransition(e) {
if (e.propertyName !== 'transform') return;
this.classList.remove('playing');
}
const keys = document.querySelectorAll('.key');
keys.forEach(key => key.addEventListener('transitionend', removeTransition));
window.addEventListener('keydown', playSound);
<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>
【问题讨论】:
-
选择器
audio[data-key="${e.keyCode}"]正在搜索属性 data-key 等于键码的标签音频。 keyCode 是键盘按下的键的代码 -
@Quentin 你标记为重复但没有回复这个:一般来说,我不明白选择括号()之间发生了什么
-
@R3tep — 这就是为什么当你在 Stackoverflow 上提问时,你应该问 a 个问题而不是多个问题。 (老实说,你应该做一些基础研究。CSS 的selectors specification 可以很容易地找出它们的含义)。
标签: javascript