尽管AJAX重新加载,倒计时计时器仍然存在
Countdown Timers that Persist Despite AJAX Reload
目前我正在使用别人的基于js的倒计时计时器。当我获取计时器时,我只需将一个值附加到倒计时计时器的类中,如下所示:
PHP: $rows = mysql_num_rows($result);
for ($j = 0 ; $j < $rows ; ++$j){
<span id="countdown'.($j+1).'">
}
确保计时器的id唯一。
问题是,当我开始使用AJAX用计时器刷新页面的部分时,新的计时器不起作用,因为id不再是唯一的。
有什么办法吗?任何想法,如果有一个更简单的插件倒计时计时器?
我正在使用这里的计时器。http://andrewu.co.uk/clj/countdown/
有关于如何跟踪已经在使用的id的想法吗?
请参阅您参考的计时器文档中如何执行多个倒计时计时器的描述:http://andrewu.co.uk/clj/countdown/.
如果你要使用该代码并有多个计时器,那么你只需要使ID按照文档解释的那样连续编号,这样你就不会有任何ID冲突,这样计时器代码就可以找到你的每个计时器。
我不知道你的ajax代码对页面做了什么,但如果它也添加了一个新的计数器,它将不得不计算正确的ID是什么(下一个可用的顺序ID是什么)。
如果你不需要在同一页面中有多个计数器,那么我不确定为什么会有问题。只要确保ajax调用没有添加另一个计时器或任何冲突的id。
基于进一步讨论的附加信息:
首先,我不认为你正在使用的计数器代码可以动态处理添加的内容。它初始化页面完成加载时页面中出现的计数器。在那之后,它再也不会看到另一个计数器,不管你是否给它一个好的ID。因此,计数器代码必须修改以处理ajax添加的计数器。
第二,改变计数器代码中的CD_Init()
函数来支持一个"寄存器"函数并不难,在这个函数中,你传递了任何你想作为计数器的对象的ID,而不是在连续的ID中循环寻找存在的东西。这对于一个计数器很好,但是对于N个计数器就有问题了。
第三,如果它现在拥有的"自动查找"功能出于某种原因(我不是一个粉丝)是有用的,那么我将把它更改为使用唯一的类名(因此多个对象都可以具有相同的HTML并被启用为计数器),并且我将添加一个ReInit()
函数,人们可以调用该函数在动态内容添加到页面后重新扫描具有该类名的对象。
如果您需要在较旧的浏览器中按类名查找元素(这些浏览器本身不支持该功能),那么有许多方法可以做到这一点。我个人使用Sizzle库,它检测函数是否内置并使用它,但如果不是,则退回到手工编码的方式。jQuery、YUI3和其他库都有自己的实现,或者在内部使用Sizzle实现。
- 如何在窗体打开时从javascript倒计时计时器值中节省时间
- 设置倒计时计时器,IE出现问题
- 显示具有服务器端自动时间注销的同步倒计时计时器
- 倒计时计时器应该持续两个php页面
- 在Jquery倒计时计时器上设置每个数字的动画
- Javascript倒计时计时器倒计时未正确更新秒/分钟
- 创建一个倒计时计时器脚本,该脚本计算声音文件的持续时间,而不是特定的日期
- 递归倒计时计时器
- 制作一个按钮倒计时计时器,该计时器将在5分钟后永久禁用,即使在页面刷新时也应保持禁用状态
- 我需要JS/jQuery中的倒计时计时器
- 设置Javascript倒计时计时器的初始值
- JavaScript倒计时计时器不会显示两次
- 如何设置此javascript倒计时计时器的样式
- 如何使用momentjs将澳大利亚/墨尔本时区设置为倒计时计时器
- 如何用JavaScript编写倒计时计时器
- 试图修复一个倒计时计时器问题,该问题导致计时器运行,然后在使用Javascript时崩溃约10秒
- 如何制作倒计时计时器并在时间到时更新MySQL记录
- 如何制作两个倒计时计时器,如果一个开始,另一个会停止
- 创建php/javascript倒计时计时器时出现问题
- 当分钟和秒为0时,倒计时计时器不会减少小时数