问题描述
我有一个网页,我想在上面放几个教学视频按钮。我想调用相同的脚本,但根据单击的按钮播放正确的视频。
<p class="video-container">
<div class="container text-center">
<button type="button" class="play-trigger btn-link " qdata-toggle="modal" data-target="#modal-video" ><i class="fab fa-youtube" ></i> Watch the video</button>
</div><!--//container-->
</p>
这是点击按钮时运行视频的脚本:
<!-- Video Modal -->
<div class="modal modal-video" id="modal-video" tabindex="-1" role="dialog" aria-labelledby="videoModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h4 id="videoModalLabel" class="modal-title sr-only">Video Tour</h4>
</div>
<div class="modal-body">
<video width="680" height="660" controls id='pplayer'>
<source src="{{asset('assets/images/howto/comps.mov')}}" type="video/mp4">
</video>
</div><!--//modal-body-->
</div><!--//modal-content-->
</div><!--//modal-dialog-->
</div><!--//modal-->
我想再添加几个按钮。每个按钮将播放不同的视频,video1,...videox。
我更愿意对视频名称列表进行硬编码,例如 var myvids = ["/mov_abc.mp4","/mov_xyz"];
,并让脚本根据按下的按钮设置视频名称。
解决方法
看看这是否有助于您获得一些关于工作设置的想法...
首先添加几个这样的按钮:
<p class="video-container">
<div class="container text-center">
<button type="button" id="btn_01" onClick="do_vidBtnClick( 1 )"> Watch the video #1 </button>
<button type="button" id="btn_02" onClick="do_vidBtnClick( 2 )"> Watch the video #2 </button>
<button type="button" id="btn_03" onClick="do_vidBtnClick( 3 )"> Watch the video #3 </button>
</div> <!--//container-->
</p>
然后添加这个Javascript代码:
<script>
myVideoList = []; //# make array hold the multiple video URLs
myVideoList[0]="assets/images/howto/comps.mov"; //# add video 1
myVideoList[1]="assets/images/howto/somefile.mp4"; //# add video 2
myVideoList[2]="assets/images/howto/nextfile.mp4"; //# add video 3
var myFileName = "";
var myPlayer = document.getElementById("pplayer");
//# Update "myFileName" using the input number set by: onClick="do_vidBtnClick( myNumForInput )" ...
function do_vidBtnClick ( inputNum )
{
//# is "inputNum-1" since first item in array "myVideoList" is at pos zero
myFileName = "{{asset('" + (myVideoList[ inputNum-1 ]) + "')}}";
myPlayer.src = myFileName;
myPlayer.load(); myPlayer.play();
}
</script>
,
感谢 VC.One 让我走上正确的道路。这是一个对我有用的解决方案。
<body
<!--- video 1 code here. button id,video id vidBtnClick all "1" -->
<p class="video-container">
<div class="container text-center">
<button id='btn_01' type="button" onclick="do_vidBtnClick(1)">Play Video1 </button>
<video id="myvid1" width="420" type="video/mp4">Your browser does not support HTML5 video.</video>
</div><!--//container-->
</p>
<!--- video 2 code here. button id,video id vidBtnClick all "2"-->
<p class="video-container">
<div class="container text-center">
<button id='btn_02' type="button" onclick="do_vidBtnClick(2)">Play Video2 </button>
<video id="myvid2" width="420" type="video/mp4">Your browser does not support HTML5 video.</video>
</div><!--//container-->
</p>
<!-- add as many buttons as you need. I used 7 so I have a list of 7 videos in script array ->
<script>
// make array for all vids,can be any names. Im using ',' as separator
var str='video1.mov,video2.mov,video3.mov,video4.mov,video5.mov,video6.mov,video7.mov';
var myVideoList = str.split(','); //split string on comma space
// console.log( myVideoList );
function do_vidBtnClick ( inputNum )
{
var inum = inputNum
var myVid=myVideoList[ inum-1 ];
myFileName="/assets/images/howto/"+ myVid
var myDId="myvid"+inum;
// set up video,remove autoplay,set controls on,load
myVideo = document.getElementById(myDId);
myVideo.removeAttribute('autoplay');
myVideo.src = myFileName;
myVideo.controls = true;
myVideo.load();
}
</script>
</body>