为什么此代码使用模板字符串来 link 查询选择器?
Why this code use Template Strings to link a Query Selector?
我从教程中获取了这段代码,但我不明白 js 如何通过模板字符串对 link QuerySelector() 和 select 元素起作用。
这里是 HTML:
<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 src="./script.js"></script>
</body>
</html>
这是 JS:
window.addEventListener('keydown', (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');
});
好吧,我对这部分有疑问:
常量音频=document.querySelector(audio[data-key="${e.keyCode}"]
);
const key = document.querySelector(div[data-key="${e.keyCode}"]
);
它是如何工作的?为什么他需要把它放在 Templete Strings 中?
模板字符串用于注入js代码。对于前。在这部分代码中
audio[data-key="${e.keyCode}"]
e.keyCode 将替换为事件对象中的 keyCode。假设关键代码是 53
那么代码就会变成这样
audio[data-key="53"]
表示在这段代码中注入了e.keyCode的值audio[data-key="53"].
模板字符串不是必需的,它们只是方便。
下面是没有模板字符串的相同代码:
const audio = document.querySelector('audio[data-key="' + e.keyCode + '"]');
此处的模板字符串有助于使代码更清晰,而不是使用连接。
此代码的目标是创建这样的查询
'audio[data-key="81"]'
将以 data-key
属性为 "81"
的音频元素为目标
我从教程中获取了这段代码,但我不明白 js 如何通过模板字符串对 link QuerySelector() 和 select 元素起作用。
这里是 HTML:
<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 src="./script.js"></script>
</body>
</html>
这是 JS:
window.addEventListener('keydown', (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');
});
好吧,我对这部分有疑问:
常量音频=document.querySelector(audio[data-key="${e.keyCode}"]
);
const key = document.querySelector(div[data-key="${e.keyCode}"]
);
它是如何工作的?为什么他需要把它放在 Templete Strings 中?
模板字符串用于注入js代码。对于前。在这部分代码中
audio[data-key="${e.keyCode}"]
e.keyCode 将替换为事件对象中的 keyCode。假设关键代码是 53 那么代码就会变成这样
audio[data-key="53"]
表示在这段代码中注入了e.keyCode的值audio[data-key="53"].
模板字符串不是必需的,它们只是方便。
下面是没有模板字符串的相同代码:
const audio = document.querySelector('audio[data-key="' + e.keyCode + '"]');
此处的模板字符串有助于使代码更清晰,而不是使用连接。
此代码的目标是创建这样的查询
'audio[data-key="81"]'
将以 data-key
属性为 "81"