Javascript 进度条倒计时不';行不通

Javascript 进度条倒计时不';行不通,javascript,css,Javascript,Css,您好,我正在尝试使用下面的代码进行进度条倒计时 功能进度(timeleft,timetotal,$element){ var progressBarWidth=timeleft*$element.width()/timetotal; $element.find('div')。动画({ 宽度:progressBarWidth }html(timeleft+“还剩几秒”); 如果(时间间隔>0){ setTimeout(函数(){ 进度(timeleft-1,timetotal$元素); }, 1

您好,我正在尝试使用下面的代码进行进度条倒计时

功能进度(timeleft,timetotal,$element){
var progressBarWidth=timeleft*$element.width()/timetotal;
$element.find('div')。动画({
宽度:progressBarWidth
}html(timeleft+“还剩几秒”);
如果(时间间隔>0){
setTimeout(函数(){
进度(timeleft-1,timetotal$元素);
}, 1000);
}
};
进度(20,20,$)
#进度条{
宽度:90%;
利润率:10px自动;
高度:22px;
背景色:#0A5F44;
}
#进步酒吧部{
身高:100%;
文本对齐:右对齐;
填充:0 10px;
线高:22px;
/*如果希望文本中间对齐,则与#进度条高度相同*/
宽度:0;
背景色:#CBEA00;
框大小:边框框;
}

这是可以的,因为每次刷新页面时,Javascript都是全新加载的,所以剩余启动时间也会保持相同的值。
您可以使用cookie或将值与PHP相结合。

编辑以下javascript:

function progress(timeleft, timetotal, $element) {
  var progressBarWidth = timeleft * $($element).width() / timetotal;
  $($element).find('div').animate({
    width: progressBarWidth
  }, 500).html(timeleft + " seconds to go");
  if (timeleft > 0) {
    setTimeout(function() {
      progress(timeleft - 1, timetotal, $element);
    }, 1000);
  }
};

下面是JSFIDLE:

控制台中有错误消息吗?您在哪里调用此函数
progress
?使用参数触发/调用
progress()
的函数在哪里?控制台中没有错误消息这是使用参数progress(20,20,$(“#progressBar”)触发/调用progress()的函数; 我只是忘了将它添加到您的代码中(与函数调用一起)。在您对编辑提出问题之后,您甚至可以看到代码运行良好。。。。你到底有什么问题?你把$element改成了$($element)我明白了。。。那不能解决问题。主要是因为没有问题要解决。但是函数调用完成了创建JQuery对象的部分(因此变量名的$prefix表示它已经是一个JQuery对象了)ok,但是使用了他使用的相同代码并调用函数,它也不起作用。在我做了修改后,它工作了。如果您看到了JSFIDLE链接,那么脚本可以工作,那么为什么您必须使用downvoteIt呢。运行问题中的代码,它可以正常工作。您的修改之所以有效,是因为您不正确地调用了该函数,而不是像问题中的OP那样调用它