悬停时随机更改音频src

Randomly change audio src on hover?

本文关键字:音频 src 随机 悬停      更新时间:2023-09-26

(我是JS和jQuery的新手,所以请原谅任何轻率的行为!(

当我将鼠标悬停在其他元素上时,我试图随机更改音频元素中的src。我已经把一些东西拼凑在一起,并通过一个带有内联JS的按钮使其工作(由于我目前找不到答案(,但无法使其工作。悬停。

我有这个jsFiddle

JS:函数声音(({

var rand = [
    'http://thejazz.ninja/sounds/v.mp3',
    'http://thejazz.ninja/sounds/w.mp3',
    'http://thejazz.ninja/sounds/x.mp3',
    'http://thejazz.ninja/sounds/y.mp3',
    'http://thejazz.ninja/sounds/z.mp3'];
var randSound = rand[Math.floor(Math.random() * rand.length)];
var player=document.getElementById('player');
var sourceMp3=document.getElementById('sourceMp3');
sourceMp3.src='' + randSound + '';
   player.load();
   player.play();
}
$('.box').click(sounds); // this doesn't work...

HTML:

<audio id="player" autoplay>
  <source id="sourceMp3" src="" type="audio/mp3" />
      Your browser does not support the audio element.
</audio>
<p>
    <button onclick='sounds()'> Load Sound</button> <!-- THIS works -->
</p>

CSS:

.box {
    display:inline-block;
    width:50px;
    height:50px;
    background:#aee;
}
$('.box').click(sounds);

执行时没有.box。用$:包裹

$(function(){                       //this function will be executed when DOM is
    $('.box').click(sounds);        //ready to be manipulated (!= onload)
});

或者在jsFiddle中,您可以选择左侧的"onLoad"/"onDomready"而不是"No wrap-in<head>":http://jsfiddle.net/DerekL/D8Ln7/6/


关于"悬停"部分,将单击更改为mouseenter:

$(function(){
    $(".box").mouseenter(sounds);
});

不要使用.hover。jQuery中有一个方法hover,但在这种情况下这将不起作用,因为它与您尝试做的不匹配。引用文档:

[.hover]将为mouseenter和mouseleave事件执行该处理程序。

更新的小提琴:http://jsfiddle.net/DerekL/D8Ln7/8/

尝试使用:

$(document).ready(function() {
    $('.box').hover(sounds);    
});

您必须确保在为html元素添加事件时呈现这些元素。

在调用悬停方法之前等待DOM加载。

$(document).ready(function(){
$( ".box" ).hover(
  function() {
    sounds();      
  }, function() {
      //hover out 
  });
});

演示FIDDLE

    $('.box').click(sounds);

而不是abouve呼叫使用必须尝试

    $(document).ready(
              function() {
                  $('.box').click(function(){
                  sounds();
                 });
               });

要在悬停时进行呼叫,您需要调用onBlur事件

           <button onblur='sounds()'> Load Sound</button>