2015-01-21 30 views
0

Demo无法停止进度条上某一点

使用jQuery插件progressbar.js我不能够在任何特定点停止进度条。不幸的是,插件api没有解释如何做到这一点,但我试图通过声明一个正在存储进度值的目标变量来完成。

target = bar.value(); 

然后我试图通过应用如果这样

if ((target * 100).toFixed(0) == 60) { 
    circle.stop(); 
} 

条件,但这不是停在60进度条停止前进!我试图用此基础上circle.stop();功能(如果你停止按钮点击停止陆侃和警报条(价值目标),但如果stattement不工作!

var target; 
var circle = new ProgressBar.Circle('#container', { 
    color: '#FCB03C', 
    strokeWidth: 3, 
    trailWidth: 1, 
    duration: 1500, 
    bar: 60, 
    text: { 
     value: '0' 
    }, 
    step: function (state, bar) { 
     bar.setText((bar.value() * 100).toFixed(0)); 
     target = bar.value(); 
    } 
}); 

circle.animate(1, function() { 
    circle.animate(); 
}) 


if ((target * 100).toFixed(0) == 60) { 
    circle.stop(); 
} 


$('#stop').on('click', function() { 
    circle.stop(); 
    alert((target * 100).toFixed(0)); 
}); 

能否请你让我知道我做错了什么,我怎么能解决这个问题?谢谢

回答

1

你的演示不工作的原因是你只检查目标一次,当它只是宣布,没有任何价值(undefined * 100).toFixed(0) == "NaN"。由于javascript isn' t默认情况下,你必须每次检查条件target更新。step函数是完美的,因为它被称为每次值变动ES。要修正此错误,移动:

if ((target * 100).toFixed(0) == 60) { 
    circle.stop(); 
} 

step功能:

step: function (state, bar) { 
    bar.setText((bar.value() * 100).toFixed(0)); 
    target = bar.value(); 
    if ((target * 100).toFixed(0) == 60) { 
     circle.stop(); 
    } 
} 

Fixed demo

+0

感谢Maremp,我已经试过这个,但是得到的错误必须是我的代码中的错字或其他内容!谢谢 – Suffii 2015-01-21 00:40:49

+0

很高兴能帮到你。如果您对细节感兴趣,我已经更新了答案以添加更多描述。 – 2015-01-21 00:42:06

+0

当然,非常感谢,顺便说一句,我必须等10分钟才能接受您的答案 – Suffii 2015-01-21 00:42:58