【问题标题】:Unable to mute video element with JavaScript无法使用 JavaScript 使视频元素静音
【发布时间】:2019-01-23 15:30:08
【问题描述】:
let muteBtn = document.querySelector('#mute');
muteBtn.addEventListener('click',muteVideo);
function muteVideo(){
    if (this.getAttribute('src') == "mute.png") {
        video.muted() == false;
        this.setAttribute('src', 'mute.png');
    } else {
        video.muted() == true;
        this.setAttribute('src', 'mute.png');
    }
}

用于静音视频的 Javascript 代码。做不出来

【问题讨论】:

  • 您没有将视频静音。你静音。 ;)
  • @ScottMarcus - 我正要说同样的话.. 酷
  • 能否提供更多代码,包括
  • .muted 是一个属性,而不是一个方法。 vdeo.muted = false | true)。此外,您使用单个 = 来分配值,而不是 ==。请参阅docs
  • @ScottMarcus <video src="video.mp4"></video> <div class="btnHolder"><img id="play" src="play.png"> <img id="reload" src="reload.png"> <img id="mute" src="mute.png">

标签: javascript function video mute


【解决方案1】:

你有两个问题:

  1. .muted 是一个属性,而不是一个方法。后面不应该有() 属性名称。
  2. 此外,您使用单个 = 来分配值,而不是 ==

===========

video.muted = false;
video.muted = true;

请参阅docs

现在,顺便说一句,如果您通过 id 获取元素,那么最快的 DOM 查询是 .getElementById(),而不是 querySelector()。此外,您可以通过访问其对象属性而不是其 HTML 属性来更改 DOM 对象的当前状态。所以,最终的代码是:

let muteBtn = document.getElementById('mute');

muteBtn.addEventListener('click',muteVideo);

function muteVideo(){
    if (this.src == "mute.png") {
        video.muted = false;
        this.src = 'unmute.png';
    } else {
        video.muted = true;
        this.src = 'mute.png;
    }
}

说了这么多,将muted设置为与当前相反的值,然后根据当前的muted值设置图像会简单得多:

document.getElementById('mute').addEventListener('click', function(){
    video.muted = !video.muted; // Switch mute to the opposite of what it is

    // Use a ternary "if" condition to set the image one way or the other:
    this.src = (video.muted) ? "mute.jpg" : "unmute.jpg";
}

【讨论】:

  • 使用 querySelector() 因为它在 YT 教程中
  • @Migoda 明白了。请记住,并非所有“有效”的代码都是好代码。 ;)
  • 为什么那个 YT 人使用querySelector
  • @Migoda 因为他不知道区别。做某事的方法总是不止一种,而且通常你选择哪种方法并不重要。 .querySelector() 很好,但 .getElementById() 更好/更快他可能不知道。
  • 想出了如何静音和取消静音function muteVideo(){ if (this.getAttribute('src') == "mute.png") { video.muted = true; this.setAttribute('src', 'sound-off.png'); } else { video.muted = false; this.setAttribute('src', 'mute.png'); } } :)))
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多