Javascript 如何跟踪随机生成的元素?

Javascript 如何跟踪随机生成的元素?,javascript,jquery,html5-audio,Javascript,Jquery,Html5 Audio,我有3个按钮,当鼠标靠近其中一个按钮时,会播放随机声音 var audio_1 = new Audio("1.mp3"); var audio_2 = new Audio("2.mp3"); var audio_3 = new Audio("3.mp3"); var array_son_video = new Array(audio_1, audio_2, audio_3); 当鼠标靠近某个元素时要播放的功能: $('body').mousemove(function(e){ $('

我有3个按钮,当鼠标靠近其中一个按钮时,会播放随机声音

var audio_1 = new Audio("1.mp3");
var audio_2 = new Audio("2.mp3");
var audio_3 = new Audio("3.mp3");

var array_son_video = new Array(audio_1, audio_2, audio_3);
当鼠标靠近某个元素时要播放的功能:

$('body').mousemove(function(e){
    $('#mouse_position').html("mouse position: x=" + e.pageX + "; y=" + e.pageY);
    if (e.pageX > 300 && e.pageX < 400) {
        var random_number = Math.floor ( Math.random() * 2 );
        son_bt_video_1 = array_son_video[random_number];
        son_bt_video_1.play();
        $("#son_bt_video_1").text('son random : '+random_number);
    }
});
像这样:

if (e.pageX > 300 && e.pageX < 400) {
    if (son_bt_video_1.paused) {
        var random_number = Math.floor ( Math.random() * 2 );
        son_bt_video_1 = array_son_video[random_number];
        son_bt_video_1.play();
        $("#son_bt_video_1").text('son random : '+random_number);
    }
}
if(e.pageX>300&&e.pageX<400){
if(son_bt_视频_1.暂停){
var random_number=Math.floor(Math.random()*2);
son_bt_video_1=数组_son_video[随机数];
son_bt_video_1.play();
$(“#son_bt_video_1”).text('son random:'+random_number);
}
}
由于声音是随机产生的,我不知道如何跟踪它们。你能给我一些建议吗

编辑:

用户没有控制权(没有播放和暂停按钮)。当鼠标靠近按钮时,只需播放声音。播放结束后,如果鼠标靠近按钮,用户可以再次播放

此代码不使用随机变量:

$('body').mousemove(function(e){
    if (e.pageX > 300 && e.pageX < 485) {               
    son_bt_video_1 = array_son_video[0];
    son_bt_video_1.play();
    }
});
$('body').mousemove(函数(e){
如果(e.pageX>300&&e.pageX<485){
son_bt_video_1=数组_son_video[0];
son_bt_video_1.play();
}
});
Sébastien

我从未使用过
new Audio()
,但假设它与HTML5
元素的工作原理相同,那么以下几点就可以了:

var tracks = [
    new Audio("1.mp3"),
    new Audio("2.mp3"),
    new Audio("3.mp3")
];
tracks.current = null;

$('body').mousemove(function(e){
    if(!tracks.current || tracks.current.ended) {
        $('#mouse_position').html("mouse position: x=" + e.pageX + "; y=" + e.pageY);
        if (e.pageX > 300 && e.pageX < 400) {
            var random_number = Math.min(tracks.length-1, Math.floor ( Math.random() * tracks.length ));
            tracks.current = tracks[random_number];
            tracks.current.play();
            $("#son_bt_video_1").text(['son random : (' , random_number, ') ', tracks.current.src].join(''));
        }
    }
});
var轨道=[
新音频(“1.mp3”),
新音频(“2.mp3”),
新音频(“3.mp3”)
];
tracks.current=null;
$('body').mousemove(函数(e){
如果(!tracks.current | | tracks.current.end){
$('#鼠标位置').html(“鼠标位置:x=“+e.pageX+”;y=“+e.pageY”);
如果(e.pageX>300和&e.pageX<400){
var random_number=Math.min(tracks.length-1,Math.floor(Math.random()*tracks.length));
tracks.current=轨道[随机数];
tracks.current.play();
$(“#son#u bt_video_1”).text(['son random:(',random_number',”),tracks.current.src].join(“”));
}
}
});

Sébastien,您提到并测试了
暂停
,但您没有给出导致暂停状态发生的代码。@Beetroot事实上,没有暂停。我只是想检查文件是否播放完毕。我猜如果声音被暂停,它就不会播放。@Beetroot Beetroot我用更多的信息编辑了我的问题,并用了一个没有随机编码的代码。
var tracks = [
    new Audio("1.mp3"),
    new Audio("2.mp3"),
    new Audio("3.mp3")
];
tracks.current = null;

$('body').mousemove(function(e){
    if(!tracks.current || tracks.current.ended) {
        $('#mouse_position').html("mouse position: x=" + e.pageX + "; y=" + e.pageY);
        if (e.pageX > 300 && e.pageX < 400) {
            var random_number = Math.min(tracks.length-1, Math.floor ( Math.random() * tracks.length ));
            tracks.current = tracks[random_number];
            tracks.current.play();
            $("#son_bt_video_1").text(['son random : (' , random_number, ') ', tracks.current.src].join(''));
        }
    }
});