在一个html网页有多个video视频时,有时需要点击某个视频让其它的视频处于暂停状态,我们可以通过以下JS来处理。
// 获取页面上所有的video
var videos = document.getElementsByTagName("video");
// 暂停函数
function pauseAll() {
var self = this;
[].forEach.call(videos, function (i) {
// 将videos中其他的video全部暂停
i !== self && i.pause();
})
}
// 给play事件绑定暂停函数
[].forEach.call(videos, function (i) {
i.addEventListener("play", pauseAll.bind(i));
})
[].forEach.call(list, fun)是个简写的写法,完整的写法是:Array.prototype.forEach.call(...); 这个意思就是,将list使用forEach来遍历,fun作为参数传入forEach方法中,fun中的this也指向了list。相当于:
function forEach(elems, callback) {
if([].forEach) {
[].forEach.call(elems, callback);
} else {
for(var i = 0; i < elems.length; i++) {
callback(elems[i], i);
}
}
}
function a(callback) {
console.log("执行函数a!");
console.log("调用回调函数");
callback(); // 调用回调函数
}
function b(){ console.log("回调函数b"); }
function c() { console.log("回调函数c"); }
function execute(){ a(b); a(c); }
execute();