国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

javascript - jquery對應(yīng)鍵盤按下播放音樂?按別的鍵會報錯?
ringa_lee
ringa_lee 2017-04-11 10:28:47
0
2
616

想實現(xiàn)鍵盤按下播放不用音樂功能?字母全部大寫
按下ASD....這些都有反應(yīng),但是當(dāng)我按下別的字母時就會報錯index.html:90 Uncaught TypeError: Cannot read property 'play' of undefined如何解決?

if(audio)那里應(yīng)該已經(jīng)判斷了,沒有的話就會直接return;為什么還會執(zhí)行下面的play?

另外一點為什么會打印5次動畫結(jié)束?

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<style>
    *{
        padding:0;
        margin:0;
    }
    .key{
        display: inline-block;
        text-align: center;
        border:2px solid black;
        margin:0 5px;
        transition: all 1s ease;

    }
    .border{
        border:2px solid red;
        transform: scale(1.2);
    }
</style>
<body>
    <p class="keys">
        <p class="key" data-key="65">
            <p class="word">A</p>
            <p>clap0</p>
        </p>
        <p class="key" data-key="83">
            <p class="word">S</p>
            <p>clap1</p>
        </p>
        <p class="key" data-key="68">
            <p class="word">D</p>
            <p>clap2</p>
        </p>
        <p class="key" data-key="70">
            <p class="word">F</p>
            <p>clap3</p>
        </p>
        <p class="key" data-key="71">
            <p class="word">G</p>
            <p>clap4</p>
        </p>
        <p class="key" data-key="72">
            <p class="word">H</p>
            <p>clap5</p>
        </p>
        <p class="key" data-key="74">
            <p class="word">J</p>
            <p>clap6</p>
        </p>
        <p class="key" data-key="75">
            <p class="word">K</p>
            <p>clap7</p>
        </p>
        <p class="key" data-key="76">
            <p class="word">L</p>
            <p>clap8</p>
        </p>                
    </p>

    <audio data-key="65" src="sounds/clap.wav" id='test1'></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>
</body>
<script src='../common/jquery.js'></script>
<script>

// jquery為什么需要一個0呢?js操作獲得的是audio對象,jquery選擇器獲得的是jquery對象,0對象的才是對應(yīng)的節(jié)點對象
    $(function(){
        // $(".key[data-key]")
        $(window).on("keypress",function(e){
            // console.log(e.keyCode);    
            // !KEY 和!audio 的區(qū)別 
            var key=$(".key[data-key="+e.keyCode+"]");
            var audio=$("audio[data-key="+e.keyCode+"]");
            if(audio){
                key.addClass("border")            
                audio.currentTime=0;
                audio[0].play();  //為什么按別的鍵會報錯?
            }

        })
        $(".key").each(function(index,e){
            $(e).on("transitionend",function(e){
                //console.log("動畫結(jié)束");  這里為何會打印5次動畫結(jié)束
                $(this).removeClass("border")
            })
        })
    })
</script>
</html>
ringa_lee
ringa_lee

ringa_lee

reply all(2)
迷茫

報錯是因為 audio 沒取到對應(yīng)按鍵的 audio。audio[0].play()即為undefined.play()。應(yīng)該是報的這個錯誤吧。
然后我試了一下jQuery沒獲取到的話,jQuery對象也不是空。轉(zhuǎn)化為布爾值是true。


測試了一下 border會觸發(fā)4次transitionend;
scale會觸發(fā)1次transitionend;
然后邊框出現(xiàn)和放大時的過渡會觸發(fā)transitionend;
$(this).removeClass("border")時也會觸發(fā)transitionend;
所以一共是10次;


期待有人能解釋下為什么border會觸發(fā)4次transitionend(☆▽☆)

洪濤

接一樓的:

border-top、border-bottom、border-left、border-right都會觸發(fā)。。。

通過jquery綁定事件不知道獲取不到propertyName屬性、不知道為什么。。。

var list = Array.from(document.getElementsByClassName("key"));

list.forEach(function(ele){
   //通過jquery綁定事件不知道獲取不到propertyName屬性、不知道為什么。。。
   ele.addEventListener("transitionend",function(e){
        console.log("動畫結(jié)束",e.propertyName);
   });
});
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template