Javascript 如何随机化一系列函数?
这里是初学者,所以我的问题只是Javascript 如何随机化一系列函数?,javascript,arrays,function,sorting,math,Javascript,Arrays,Function,Sorting,Math,这里是初学者,所以我的问题只是let videos=[]数组中的最后一个函数。其他函数也可以工作,但仅当它们是数组中的最后一个索引时。因此,我尝试将函数分配给变量,并将它们放入let videos=[]数组中,同时播放所有视频。我将这些设置为在播放1个视频时隐藏其他视频 此外,我还试图确保每个视频只播放一次 function playNextVideo() { let videos = [showVideo1(), showVideo2(), showVideo3()]; l
let videos=[]
数组中的最后一个函数。其他函数也可以工作,但仅当它们是数组中的最后一个索引时。因此,我尝试将函数分配给变量,并将它们放入let videos=[]
数组中,同时播放所有视频。我将这些设置为在播放1个视频时隐藏其他视频
此外,我还试图确保每个视频只播放一次
function playNextVideo() {
let videos = [showVideo1(), showVideo2(), showVideo3()];
let randomVideo = Math.floor(Math.random() * videos.length);
videos.splice(randomVideo,1);
}
document.getElementById('video1').addEventListener('ended',playNextVideo(),false);
与其调用所有三个函数并担心隐藏您不想要的视频,不如存储对函数的引用并一次只执行一个:
function playNextVideo() {
let videos = [ showVideo1, showVideo2, showVideo3 ];
let randomVideo = Math.floor( Math.random() * videos.length );
videos.splice(randomVideo, 1)[0](); // Splice out the element at position randomVideo. You'll get back an array of 1 element, so extract the 0th element (a function) and call it
}
与其调用所有三个函数并担心隐藏您不想要的视频,不如存储对函数的引用并一次只执行一个:
function playNextVideo() {
let videos = [ showVideo1, showVideo2, showVideo3 ];
let randomVideo = Math.floor( Math.random() * videos.length );
videos.splice(randomVideo, 1)[0](); // Splice out the element at position randomVideo. You'll get back an array of 1 element, so extract the 0th element (a function) and call it
}
randomVideo
是索引,因此您应该使用return videos[randomVideo]
并执行showVideo1()
返回函数?是的,它用于使视频仅在它是数组中的最后一项时可见,但该部分现在已解决。:)randomVideo
是索引,因此您应该使用return videos[randomVideo]
并执行showVideo1()
返回函数?是的,它用于使视频仅在它是数组中的最后一项时可见,但该部分现在已解决。:)比我之前建议的答案更好。这很有效!不过有两个小问题。视频不会自动播放到下一个视频,每个视频只能播放一次。我在这里得到了一个答案:但我不确定如何将其应用到我的新情况中。我已更新了答案,在播放之前将视频从阵列中删除,因此视频只播放一次。至于自动播放下一个视频,您必须在视频中添加一个事件处理程序,以便在视频结束时,它们自动调用playNextVideo()
函数。由于您没有提供实际视频实现的详细信息,这一部分由您自己负责。我找到了一个简单的解决方案,我所要做的就是删除事件侦听器中函数的括号。现在100%有效!比我之前建议的答案更好。这很有效!不过有两个小问题。视频不会自动播放到下一个视频,每个视频只能播放一次。我在这里得到了一个答案:但我不确定如何将其应用到我的新情况中。我已更新了答案,在播放之前将视频从阵列中删除,因此视频只播放一次。至于自动播放下一个视频,您必须在视频中添加一个事件处理程序,以便在视频结束时,它们自动调用playNextVideo()
函数。由于您没有提供实际视频实现的详细信息,这一部分由您自己负责。我找到了一个简单的解决方案,我所要做的就是删除事件侦听器中函数的括号。现在100%有效!