问题描述
我有不同的 vimeo-iframe 嵌入,我希望每个嵌入都有自己的播放按钮。
我收到错误:Uncaught TypeError: player.play is not a function
html:
<div class="video">
<div style="padding:56.25% 0 0 0;position:relative;">
<iframe class="vimeo" src="https://player.vimeo.com/video/00000001?badge=0&autopause=0&player_id=0&app_id=0000" frameborder="0" allow="autoplay; fullscreen; picture-in-picture" allowfullscreen="" style="position:absolute;top:0;left:0;width:100%;height:100%;"></iframe>
<div class="btn">play</div>
</div>
<div class="video">
<div style="padding:56.25% 0 0 0;position:relative;">
<iframe class="vimeo" src="https://player.vimeo.com/video/00000002?badge=0&autopause=0&player_id=0&app_id=0000" frameborder="0" allow="autoplay; fullscreen; picture-in-picture" allowfullscreen="" style="position:absolute;top:0;left:0;width:100%;height:100%;"></iframe>
<div class="btn">play</div>
</div>
...
js: 遍历所有 iframe 并初始化播放器
$(document).ready(function () {
var x = document.querySelectorAll("iframe");
var nodelist = x.length;
for (i = 0; i < nodelist; i++) {
el = x[i];
var player = new Vimeo.Player(x[i]);
player.on('play',function () {
console.log('played the video!');
});
player.on('ended',function () {
console.log('ended the video!');
});
}
});
js: 点击启动众多播放器之一
$(".btn").on('click',function() {
var player = $(this).siblings("iframe")[0];
console.log(player);
player.play();
});
更新:
使用此代码我没有收到错误消息,但是我如何控制哪个按钮将启动哪个视频?目前第一个按钮正在启动最后一个视频
var x = document.querySelectorAll("iframe");
var nodelist = x.length;
for (i = 0; i < nodelist; i++) {
el = x[i];
var player = new Vimeo.Player(x[i]);
document.querySelector('.play').addEventListener('click',function() {
player.play();
});
player.on('play',function () {
console.log('played the video!');
});
}
解决方法
无论循环多少次,
VHD
确实是第一个按钮。改用 document.querySelector('.play')
。
document.querySelectorAll(".play")[i]