Javascript倒计时+价格调整

时间:2013-01-05 19:13:07

标签: php javascript countdown

我试图制作一个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='&euro; '+(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='&euro; '+(secs*30);
        document.getElementById('status').innerHTML = (secs);

        secs--;
        setTimeout( function() { countDown(secs, ele); }, 1000);
    }
}

</script>

感谢@Dan Mayor。

2 个答案:

答案 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='&euro; '+(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);