将倒计时计时器的当前值存储在变量中,以便在模板工具包文件中使用
storing the current value of countdown timer in variable for using in the template toolkit file
我在Hours left字段中设置了一个倒计时计时器,以查找剩余的小时数。我还有一个输入总估计时间的字段,当输入总估计时间的值时,计时器将启动。
现在我的要求是,当我改变了总估计时间,我想要得到定时器的值,在那个时候,从新定时器开始的地方计算新的值。
for例如:我的第一个总估计时间= 3当计时器达到02:00:00时,我将总估计时间更改为5,因此我的计时器将从04:00:00重置(逻辑:5-3+2 = 4或5-(3-2)= 4)
所以我想要当前的倒计时计时器值。我怎么能这么做??
my Timer.js文件:
var Timer;
var TotalSeconds;
function CreateTimer(TimerID, Time) {
Timer = document.getElementById(TimerID);
TotalSeconds = Time;
UpdateTimer()
window.setTimeout("Tick()", 1000);
}
function Tick() {
if (TotalSeconds <= 0) {
alert("Time's up!")
return;
}
TotalSeconds -= 1;
UpdateTimer()
window.setTimeout("Tick()", 1000);
}
function UpdateTimer() {
var Seconds = TotalSeconds;
var Days = Math.floor(Seconds / 86400);
Seconds -= Days * 86400;
var Hours = Math.floor(Seconds / 3600);
Seconds -= Hours * (3600);
var TimeStr = ((Days > 0) ? Days + " days " : "") + LeadingZero(Hours) + ":" + LeadingZero(Minutes) + ":" + LeadingZero(Seconds);
Timer.innerHTML = TimeStr;
}
function LeadingZero(Time) {
return (Time < 10) ? "0" + Time : + Time;
}
这是我调用定时器的地方。
<script type="text/javascript" src="./Timer.js"></script>
<div id='timer'></div>
[% IF bug.estimated_time >0 %]
<script type="text/javascript">
var time;
time = CreateTimer("timer",[% bug.estimated_time %]*3600);
window.onload = CreateTimer("timer",[% bug.estimated_time %]*3600);
</script>
[% END %]
这里我想调用函数
<tr>
<td align="center">
<input name="estimated_time" id="estimated_time"
value="[% PROCESS formattimeunit
time_unit=bug.estimated_time %]"
size="6" maxlength="6" onchange="updateRemainingTime();">
<input type = "Hidden" name="estimate_time" id="estimate_time" value="[% bug.estimated_time %]" size="6" maxlength="6">
</td
在调用updateRemainingTime(),我想采取定时器的当前值,并使用它,我想重置计数器使用上述逻辑....
Template Toolkit在这里基本上是无关紧要的——一旦页面被呈现,TT就不再起作用了。
如果没有Timer.js中的细节(有很多很多Javascript计时器),就不可能给你一个完整的答案。但是大概有一种方法可以获得计时器的当前值,或者与它交互来改变它。如果没有,你需要创建一个。
我将假设您正在使用这个Timer,因为它的方法名称与您的代码相对应。如果你还没有,希望这篇文章能让你走上正轨。
基本上,您需要像这样修改其中一个函数:
function UpdateTimer(adjustment) {
if (typeOf adjustment != 'undefined') {
// adjustment provided, change Timer value
TotalSeconds += adjustment;
}
Timer.innerHTML = TotalSeconds;
}
这个变化允许你选择性地传递一个调整(正或负)来改变定时器的值,然后你像这样调用它:
function updateRemainingTime() {
var $origTime = $('#estimate_time');
var newEstim = $('#estimated_time').val();
UpdateTimer((newEstim - $origTime.val())*3600);
$origTime.val(newEstim); // update hidden field to new value
}
您没有提到这些值是否需要存储在数据库中,但这是完全不同的问题。
看起来你使用的代码与我找到的代码关系非常密切,我建议你做的仍然成立:
function UpdateTimer(adjustment) {
var Seconds = TotalSeconds;
if (typeOf adjustment != 'undefined') {
// adjustment provided, change Timer value
Seconds += adjustment;
}
/* rest of your UpdateTimer code remains unchanged */
}
相关文章:
- Google/html5语音识别JavaScript SDK Chrome网络工具包SpeechRecognition
- 如何在GoogleWeb工具包(GWT)中从JSNI调用接口(实例化)
- Javascript图形可视化工具包,具有高性能(500-1000个节点)
- 用于Javascript的Onelogin SAML工具包
- Ajax控制工具包中的错误's升级后的JS文件
- 设计师如何使用GoogleWeb工具包
- Webpack和Dojo工具包
- 如何从 Chrome 中的文件输入中删除“未选择文件”工具提示
- AWS S3 JavaScript 开发工具包 getSignedUrl 仅返回基本路径
- 如何通过谷歌身份工具包修改登录按钮?(节点.js)
- 相当于 Jquery/Backbone.js 中的 Dgrid/Store (Dojo 工具包)
- jquery与ajax控制工具包冲突2013年9月/10月发布
- JavaScript请求/操作框架或工具包
- Mac Node网络工具包菜单
- Chrome返回未定义的cancelFullScreen和网络工具包cancelFullScreen
- 当SVG是单独的文件时,剪辑路径/web工具包掩码有效,但在内联时无效
- 利用带有javascript工具包密码加密的jekyll框架
- 来自 react-redux-universal-hot-hot 示例初学者工具包中的第三方 API 的初始数据加载
- 将倒计时计时器的当前值存储在变量中,以便在模板工具包文件中使用
- jquery.js在Perl模板工具包生成的文件中没有正确引用