我试图制作一个JS倒计时脚本来调整要去的秒数和必须支付的价格。
例如: 您将在 5 秒内重定向,或点击此处支付 150 以立即重定向。
所以,每秒30个虚拟硬币。
我已经尝试过了,但是我很厌倦JS。
所以,我尝试过(通过复制/粘贴在互联网上找到的其他代码):
<script type="text/javascript">
function countDown(secs,elem) {
var element = document.getElementById(elem);
element.innerHTML = "Please wait for "+secs+" seconds";
if(secs < 1) {
clearTimeout(timer);
location.href='mywebpage.php';
}
secs--;
var timer = setTimeout('countDown('+secs+',"'+elem+'")',1000);
timeout = 4;
if(document.getElementById('costs'))
document.getElementById('costs').innerHTML='€ '+(timeout*30);
document.getElementById('status').innerHTML = formatTime (timeout);
timeout--;
}
</script>
然后在场外有HTML:
<div id="costs"></div>
<div id="status"></div>
<script type="text/javascript">countDown(3000,"status");</script>
我希望有人可以帮助我。
自动倒计时,当计数器达到零时必须重定向,必须每秒从第二个“计数器”取下30个东西。
所有提示将不胜感激。
提前致谢。
编辑: 请注意,倒计时工作,超时也有效,但我不知道如何将倒计时链接到超时= 4(倒计时功能的数量应为4,已经尝试过document.getElementById('status');以及东西那样的。)
编辑2:
固定!
所以,想通了。
对于那些也在寻找类似JS的人来说:
<script type="text/javascript">
function countDown(secs, ele)
{
if(secs <= -1)
{
location.href = 'rangtest.php'; // No need to kill a timeout it only fires once
}
else
{
// This is just copying your code, you should fix this to use the targeted ele
if(document.getElementById('costs'))
document.getElementById('costs').innerHTML='€ '+(secs*30);
document.getElementById('status').innerHTML = (secs);
secs--;
setTimeout( function() { countDown(secs, ele); }, 1000);
}
}
</script>
感谢@Dan Mayor。
答案 0 :(得分:0)
我一直在尝试将参数应用于计时器函数时遇到问题,导致我总是定义一个匿名函数,该函数反过来调用我要调用的函数。下面需要一些修改,但应该有所帮助。
function countDown(secs, ele)
{
if(secs <= 0)
{
location.href = 'mypage.htm'; // No need to kill a timeout it only fires once
}
else
{
// This is just copying your code, you should fix this to use the targeted ele
if(document.getElementById('costs'))
document.getElementById('costs').innerHTML='€ '+(secs*30);
document.getElementById('status').innerHTML = formatTime (secs);
secs--;
setTimeout( function() { countDown(secs, ele); }, 1000);
}
}
答案 1 :(得分:0)
我更喜欢使用jquery的bind函数,而不是每次都支付创建新匿名函数的开销:
setTimeout(countDown.bind(this, secs, ele), 1000);