【Python全栈-JavaScript】JavaScript30-day1-绑定事件


JavaScript开源项目JavaScript30-案例day1

JavaScript Drum Kit 指南 纯 JS 模拟敲鼓效果

参考:https://github.com/soyaine/JavaScript30

效果:当鼠标移动到对应标签上,产生 style效果和播放对应声音

源码如下:

DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>JavaScript30-day1-绑定事件title>
    <style>
        html{
            font-size: 10px;
            background: url("http://ww1.sinaimg.cn/large/007HF978ly1g45cjqu3dkj30xc0m8qih.jpg") no-repeat;
            background-size: 100%;
            margin: 0;
            padding: 0;
        }
        .keys{
            display: flex;
            flex: 1;
            align-items: center;
            justify-content: center;
            margin-top: 25%;
        }
        .key{
            border-radius: 5px;
            padding: 20px;
            background: rgba(0,0,0,0.3);
            border: 4px solid #ffaf62;
            font-family: sans-serif;
            text-align: center;
            color: white;
            text-shadow: 0 0 5px black;
            transition: all 0.07s;      /*动画过渡时间*/
            margin: 10px;
        }
        kbd{
            display: block;
            font-size: 40px;
        }
        .sound{
            font-size: 12px;
            text-transform: uppercase;
            letter-spacing: 1px;
            color: yellow;
        }
        .playing{
            transform: scale(1.1);          /*转变尺寸*/
            border-color: gold;
            box-shadow: 0 0 10px gold;
        }
    style>
head>
<body>
<div class="keys">
    <div class="key" data-key="65">
        <kbd>Akbd>
        <span class="sound">clapspan>
    div>
    <div class="key" data-key="83">
        <kbd>Skbd>
        <span class="sound">hihatspan>
    div>
    <div class="key" data-key="68">
        <kbd>Dkbd>
        <span class="sound">kickspan>
    div>
    <div class="key" data-key="70">
        <kbd>Fkbd>
        <span class="sound">openhatspan>
    div>
    <div class="key" data-key="71">
        <kbd>Gkbd>
        <span class="sound">boomspan>
    div>
    <div class="key" data-key="72">
        <kbd>Hkbd>
        <span class="sound">ridespan>
    div>
    <div class="key" data-key="74">
        <kbd>Jkbd>
        <span class="sound">snarespan>
    div>
    <div class="key" data-key="75">
        <kbd>Kkbd>
        <span class="sound">tomspan>
    div>
    <div class="key" data-key="76">
        <kbd>Lkbd>
        <span class="sound">tinkspan>
    div>
div>
<audio src="sounds/clap.wav" data-key="65">audio>
<audio src="sounds/hihat.wav" data-key="83">audio>
<audio src="sounds/kick.wav" data-key="68">audio>
<audio src="sounds/openhat.wav" data-key="70">audio>
<audio src="sounds/boom.wav" data-key="71">audio>
<audio src="sounds/ride.wav" data-key="72">audio>
<audio src="sounds/snare.wav" data-key="74">audio>
<audio src="sounds/tom.wav" data-key="75">audio>
<audio src="sounds/tink.wav" data-key="76">audio>

<script>
    window.onload = function () {
        const keys = Array.from(document.getElementsByClassName("key"));    //// 获取页面所有按钮元素
        const audios =
        keys.forEach(function (value,index,array) {
            // console.log(value.getAttribute("data-key"));
            // console.log(typeof value);
            value.onmouseenter = function () {
                value.className += ' playing';
                audio = document.querySelector(`audio[data-key="${value.getAttribute("data-key")}"]`);
                audio.currentTime = 0;
                audio.play();
            };
            value.onmouseleave = function () {
                value.setAttribute('class',"key");
            };

        })
        }
script>

body>
html>

补充:[objects].foreach()

DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>foreach()用法title>
head>
<body>
<div class="outer">
    <button class="A">A按钮button>
    <button class="B">B按钮button>
    <button class="C">C按钮button>
    <button class="D">D按钮button>
    <button class="E">E按钮button>
div>
<script>
    window.onload = function () {
        var keys = Array.from(document.querySelectorAll('button'));
        keys.forEach(key => key.onclick = function(){
            console.log(key);       //
            console.log(`${key.innerHTML}匿名函数的的写法`);    //A按钮匿名函数的的写法
        })
        // window.addEventListener('keydown', playSound);
    };

script>
body>
html>

注意:这句字符串拼接,最外层使用的是特殊引号

console.log(`${key.innerHTML}匿名函数的的写法`)