javascript - 倒计时栏Javascript不减少
问题描述
我有一个倒计时进度条的 JS 代码,它应该采用时间值并减少直到时间到达,然后显示 EXPIRED。
function progress(timeleft, timetotal, $element) {
var bar = document.getElementById("#progressBar")
var progressBarWidth = (timeleft * bar.width()) / timetotal
console.log("width is" + bar.width() + "time left is" + timeleft)
$element.find("div").animate({
width: progressBarWidth
}, timeleft == timetotal ? 0 : 1000, "linear")
if (timeleft > 0) {
setTimeout(function() {
progress(timeleft - 1, timetotal, $element)
}, 1000)
}
}
progress(180, 180, $("#progressBar"))
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="progressBar">
<div></div>
</div>
问题是我在这里将其设置为 3 分钟进行测试,并且 bar 没有减少。我已经通过控制台进行了调试,'bar.width()' 似乎是未定义的。任何想法如何解决它?谢谢!
解决方案
这不应该
var bar = document.getElementById("#progressBar")
成为这个
var bar = document.getElementById("progressBar")
https://developer.mozilla.org/en-US/docs/Web/API/Document/getElementById
和
bar.width()
是
bar.clientWidth
推荐阅读
- php - 如何在从数据库中获取数据时仅获取最后一次迭代值,我尝试将值获取为 JSON 格式
- angular - Angular:随机类和 id 名称
- reactjs - 反应日期选择器为一天或正文添加边距
- r - 比较同一数据框中的日期间隔
- authentication - Asp.Net Core 2 中基于令牌的身份验证
- php - 获取多对多多态中的所有关系
- c# - 复制 ActiveDirectory 用户
- coq - Coq中列表的布尔相等?
- tomcat - 可以在 Jetty 上配置 WebDav 访问吗?
- node.js - 在 webpack-dev-server npm 脚本进程上调试 VS Code 中的节点模块