我正在尝试从http://www.jqueryscript.net/time-clock/Simple-jQuery-Html5-Based-360-Degree-Countdown-Timer-countdown360.html调整倒数计时器以添加确定倒计时的按钮。
我有点困惑(不,真的很困惑) a)如何将按钮链接到倒计时显示, b)如何在我点击所需按钮之前停止显示,并且 c)如何在不重新加载页面的情况下重置进程。
目前它的初始秒值为10(放在那里只是为了测试看它在做什么),但没有响应按钮。
这是html:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
<script src="../src/jquery.countdown360.js" type="text/javascript" charset="utf-8"></script>
</head>
<body>
<div id="container">
<div id="countdown"></div>
<script type="text/javascript" charset="utf-8">
$("#countdown").countdown360({
radius : 50,
seconds : 10,
fontColor : '#FFFFFF',
autostart : false,
onComplete : function () {//will ring bell
}
}).start()
</script>
<script>
window.onload = init;
function init(){
document.getElementById('btnStart1').onclick = start1;
document.getElementById('btnStart2').onclick = start2;
document.getElementById('btnReset').onclick = cdreset;
start.countdown360();
}
function start1(){ // starts 1 min countdown
seconds = 60;
countdown360();
}
function start2(){ // starts 2 min countdown
seconds = 120;
countdown360();
}
function reset() { // resets countdown
seconds=0;
//???
}
</script>
</div>
<div id="container">
<div id="countdown"></div>
<input type="button" value="1 min" id="btnStart1"/>
<input type="button" value="2 min" id="btnStart2"/>
<br>
<input type="button" value="Reset" id="btnReset"/>
</body>
</html>
欢迎任何帮助!
答案 0 :(得分:2)
事实证明,没有一种合法的方法可以做到这一点,事实上,有关该主题的文档并不多,而且插件本身不提供这样的功能,或者至少不在用户中友好的方式。
但是我深入了解代码的内容,并且设法使其工作。 这是一个JSFiddle,在那里我展示了我理解你想要的东西。
<div id="countdown"></div>
<button id="start">Start</button>
<button id="set60">Set 60s</button>
<button id="set120">Set 120s</button>
<button id="reset">Reset</button>
start = document.querySelector("#start");
set60 = document.querySelector("#set60");
set120 = document.querySelector("#set120");
reset = document.querySelector("#reset");
div = $("#countdown");
pingSound = new Audio("http://www.sounddogs.com/previews/2220/mp3/402763_SOUNDDOGS__mu.mp3");
pingSound.preload = "auto"; //<- Optional but recommended
countdown = div.countdown360({
radius: 50,
seconds: 30,
fontColor: '#FFFFFF',
autostart: false,
onComplete: function () {
pingSound.play();
}
});
countdown.start(); //This right here is for showing the clock on load.
countdown.stop();
start.onclick = function () {
startCountdown(countdown);
}
set60.onclick = function () {
setSeconds(countdown, 60);
}
set120.onclick = function () {
setSeconds(countdown, 120);
}
reset.onclick = function () {
setSeconds(countdown, 0);
}
function startCountdown(countdown) {
countdown.start();
}
function setSeconds(countdown, seconds) {
countdown.stop();
countdown.settings.seconds = seconds;
countdown.start();
}
button
元素。div
元素。Audio
元素。Countdown.settings.seconds
属性,即倒计时的实际秒数。使用那些变量&amp;方法,我是怎么做的非常简单。
如果您希望隐藏时钟直到您播放它:
我们首先创建倒计时对象并隐藏div。
div = $("#countdown");
div.css( "display" , "none" );
countdown = div.countdown360({..});
为什么?很好,因为插件的运作方式。一旦你创建了倒计时你的div就会被插件变得更大,你需要在那里创建倒计时,因为这是它工作的唯一方式,所以如果你不想要一个空白的正方形(因为我们没有开始倒计时)你必须隐藏div本身。
因此,我们在每个按钮中添加onclick
事件:
start
- &gt; startCountdown(countdown) , div.css( "display" , "block" );
- &gt;开始倒计时并显示div。set60
- &gt; setSeconds(countdown,60)
- &gt;将倒计时设置为60秒。set120
- &gt; setSeconds(countdown,120)
- &gt;将倒计时设置为120秒。set0
- &gt; setSeconds(countdown,0)
- &gt;将倒计时设置为0。就是这样,我花了一段时间才弄清楚,希望我不会让你生死,我可以建议下次再换一个更好的插件吗?祝你好运:)
如果您希望在加载时显示时钟:
Okey,所以这是对你的请求的更新,如果我们从我的原始代码中分离出来,使div显示在加载上非常简单(这里的JSFiddle和代码已经更新)
我们首先创建倒计时对象,然后启动它并暂时停止它(冻结它直到你再次启动它)。
countdown = div.countdown360({..});
countdown.start();
countdown.stop();
现在,我们向按钮添加相同的onclick
事件,除了开始按钮,它不再需要将div显示为块,因为它不是隐藏的。
start
- &gt; startCountdown(countdown)
- &gt;开始倒计时。如果您想在倒计时结束时播放声音:
要使ping声音最终播放,您只需要创建一个新的Audio
对象,并将mp3 / ogg src作为参数:
pingSound = new Audio("http://www.sounddogs.com/previews/2220/mp3/402763_SOUNDDOGS__mu.mp3");
然后,预加载音频以便它可以播放(否则,当您调用播放时,它首先必须加载)。这是可选的,但建议使用。
pingSound.preload = "auto";
然后在倒计时的Audio.play()
事件中调用onComplete
函数。
countdown = div.countdown360({
(..)
onComplete:function(){
pingSound.play();
}
});
就是这样,快乐的编码:)
答案 1 :(得分:0)
首先你没有jquery.js而你正在使用$('#countdown')
您没有任何名为cdreset的功能。
我为你写了一个类似的代码:
<script>
var m = setInterval(start, 1000), // init the interval , every 1 sec will call start function
s = 60;
function start(){
s = s -1;
document.getElementById("count").innerHTML = s;
}
function stop(){
clearInterval(m);
}
</script>
<p id="count">60</p>
<input type="submit" onclick="stop()" value="stop" />
它将从60开始倒计时到-XXX
你应该添加一个条件,以便将计时器停在0:)