javascript - 尝试播放音频时出现“无法读取未定义的属性‘添加’”
问题描述
我似乎无法弄清楚这里的问题是什么。
单击“播放”时,我在函数中收到 UnCaughtTypeError“无法读取未定义的属性‘添加’” togglePlay
。
Javascript代码:
function $(id) {
return document.getElementById(id);
};
const media = document.getElementById('audio');
let ui = {
play: 'playAudio',
audio: 'audio',
percentage: 'percentage',
seekObj: 'seekObj',
currentTime: 'currentTime'
};
function togglePlay() {
if (media.paused === false) {
media.pause();
$(ui.play).classList.remove('pause');
} else {
media.play();
$(ui.play).classList.add('pause');
}
};
function calculatePercentPlayed() {
let percentage = (media.currentTime / media.duration).toFixed(2) * 100;
$(ui.percentage).style.width = `${percentage}%`;
}
function calculateCurrentValue(currentTime) {
const currentMinute = parseInt(currentTime / 60) % 60;
const currentSecondsLong = currentTime % 60;
const currentSeconds = currentSecondsLong.toFixed();
const currentTimeFormatted = `${currentMinute < 10 ? `0${currentMinute}` : currentMinute}:${
currentSeconds < 10 ? `0${currentSeconds}` : currentSeconds
}`;
return currentTimeFormatted;
}
function initProgressBar() {
const currentTime = calculateCurrentValue(media.currentTime);
$(ui.currentTime).innerHTML = currentTime;
$(ui.seekObj).addEventListener('click', seek);
media.onended = () => {
$(ui.play).classList.remove('pause');
$(ui.percentage).style.width = 0;
$(ui.currentTime).innerHTML = '00:00';
};
function seek(e) {
const percent = e.offsetX / this.offsetWidth;
media.currentTime = percent * media.duration;
}
calculatePercentPlayed();
}
$(ui.play).addEventListener('click', togglePlay)
$(ui.audio).addEventListener('timeupdate', initProgressBar);
HTML 代码:
<div class="audio-player">
<audio id="audio">
<source src="{{ product.audio_file.url }}" type="audio/mp3">
</audio>
<div class="player-controls">
<div id="radioIcon"></div>
<button id="playAudio"></button>
<div id="seekObjContainer">
<div id="seekObj">
<div id="percentage"></div>
</div>
</div>
<p><small id="currentTime">00:00</small></p>
</div>
</div>
我看到这个问题与添加类.pause
有关,ui
但我无法弄清楚到底是什么问题。如果有人可以提供帮助,那就太好了!如果需要任何其他信息,请告诉我,我很乐意提供。谢谢。
解决方案
推荐阅读
- c - 为什么我的右移运算符在逻辑上而不是在 c 中以算术方式运行?
- amazon-web-services - Amazon 为 EKS VPC 设置建议的 Cloudformation 模板直接与其建议相矛盾。是否存在其他模板?
- debugging - 如何在 GDB 中设置断点,但不让断点暂停执行?如果线路被击中,我只想在控制台中收到通知
- excel - VBA中的自动过滤器
- bash - Bash 脚本 - AWS SSM 并行导出变量
- wagtail - 当我复制一个页面时,它的 ParentalManyToManyFields 不会被复制。难道我做错了什么?
- html - 请我试图将我的项目连接到数据库,但出现错误:当前上下文中不存在名称“文本框”
- python - 在类中设置python方法的属性
- c# - NHibernate QueryOver 删除重复项
- javascript - 用javascript中的键检索对象