Javascript 如何通过数组调用函数?

Javascript 如何通过数组调用函数?,javascript,arrays,Javascript,Arrays,我有一个视频播放列表。我想在播放选定的视频/视频长度(例如2ed、4th、8th…)时调用一个函数(例如提醒“注意!”)。任何解决方案都值得赞赏。使用完整的 您可以在视频元素上收听播放事件。以下是如何做到这一点: document.getElementById('myVideo').addEventListener("playing", play_started, false); 启动视频时将调用play\u start方法。在该方法中,您可以检查是否正在播放特定的视频。希望这会有所帮助。这是

我有一个视频播放列表。我想在播放选定的视频/视频长度(例如2ed、4th、8th…)时调用一个函数(例如提醒“注意!”)。任何解决方案都值得赞赏。使用完整的


您可以在
视频
元素上收听
播放
事件。以下是如何做到这一点:

document.getElementById('myVideo').addEventListener("playing", play_started, false);
启动视频时将调用
play\u start
方法。在该方法中,您可以检查是否正在播放特定的视频。希望这会有所帮助。

这是我的

其想法是添加下拉列表:

const视频源=[
'http://mdn.github.io/learning-area/html/multimedia-and-embedding/video-and-audio-content/rabbit320.webm',
'http://media.w3.org/2010/05/sintel/trailer.mp4',
'https://vtt.tumblr.com/tumblr_ok41s7Iebh1t4fjz0_480.mp4', 'https://vtt.tumblr.com/tumblr_ok44bpZZka1t4fjz0_480.mp4','http://media.w3.org/2010/05/bunny/trailer.mp4'
];
const select=document.querySelector('select');
select.onchange=function(){
视频播放(parseInt(this.value))
};
videoSources.forEach(附件选项);
函数附件选项(url、索引){
const option=document.createElement(“选项”);
option.setAttribute(“值”,索引);
option.innerHTML=url.substr(url.lastIndexOf('/')+1);
选择.appendChild(选项);
}
var i=0;
var videoCount=videoSources.length;
document.getElementById(“myVideo”).setAttribute(“src”,videoSources[0]);
视频播放(0);
函数videoPlay(videoNum)
{
document.getElementById(“myVideo”).setAttribute(“src”,videoSources[videoNum]);
document.getElementById(“myVideo”).load();
document.getElementById(“myVideo”).play();
}


https://jsfiddle.net/nojava/5vo8cdbr/#run
由于视频开始播放时代码未被阻止,因此可以在调用
播放
后立即放置逻辑。 检查索引最简单的方法是
if(index==1 | | index==3 | | index==4)
等,但更易于维护的方法是将其保存在数组中,例如:
if([1,3,4].indexOf(vidIndex)!=-1)
。数组包含索引
indexOf
返回数组内的索引,如果该索引不在数组内,则为
-1

使用警报的示例如下:


更高级的用例是将url存储在对象内部,您可以在其中为对象分配特定的元数据和行为。e、 g.:

您是否尝试了
播放
事件?由于
play()
启动视频并返回(在播放结束之前),您可以在调用play()后直接添加功能:
vidIndex%2==0
检查被2除后的余数是否为0。换句话说,如果它是一个偶数。这只是一个例子。要指定索引,您可以使用如下内容:
if([1,3,4].indexOf(vidIndex)!=-1)
()。或者更进一步,更改源数组,使其包含有关播放时应发生什么的信息,以具有更大的通用性—如果无法找到索引,则由
indexOf
返回1。所以
!=-1
表示它不应为-1,因此它位于数组中。我添加了一个带有更多信息的答案
vidIndex
在方法之间共享(其所谓的“范围”),并在
myHandler
方法中增加:
vidIndex=++vidIndex%videoCount
使用
%
或“modulo”运算符确保VideIndex保持在videoCount范围内。最简单的方法是在索引<0时将
videoCount
添加到索引中。e、 g.:(将索引设置迁移到一个单独的函数“play”,在该函数中检查索引)亲爱的@Me.Name,您添加了
if(v.onPlay)v.onPlay(v)在您的最新更新中。对我来说,这意味着如果videoSource[videoIndex]正在播放,则播放videoSource[videoIndex]。。代码在没有这个条件的情况下仍然可以工作?啊,我使用了原始帖子的第二把小提琴(带对象的那把)。在该示例中,功能被添加到需要的对象中。e、 g.
视频源[3]。onPlay=someFunction
。行
if(v.onPlay)v.onPlay(v)
如果set.Hi@Me.Name,则调用该函数。我使用您第一个文件中的方法检查索引,因为正如您所说,它更易于维护。但它在我的代码中不起作用。另外,我用视频标题的“显示”替换了“警报”功能。我用fadein/out为“display”函数尝试了“setTimeout”功能,但都不起作用。jsfiddle.net/nojava/7vrdx11r
document.getElementById('myVideo').addEventListener("playing", play_started, false);