2011-07-28 26 views
1

我已經做了這個計時器腳本,但我似乎無法做到這一點,所以TI開始onclick。我如何使這個計時器開始onclick

這裏是我的全部代碼:

<script type="text/javascript"> 
function display(notifier, str) { 
    document.getElementById(notifier).innerHTML = str; 
} 

function toMinuteAndSecond(x) { 
    return Math.floor(x/60) + ":" + x%60; 
} 

function setTimer(remain, actions) { 
    (function countdown() { 
    display("countdown", toMinuteAndSecond(remain));actions[remain] && actions[remain](); 
    (remain -= 1) >= 0 && setTimeout(arguments.callee, 1000); 
    })(); 
} 

setTimer(20, { 
       20: function() { 
        display("notifier", "seconds"); 
       }, 
       1: function() { 
        display("notifier", "second"); 
       }, 

       0: function() { 
        display("notifier", "seconds"); 
       } 
      } 
); 
</script> 

<!--Start Redirect Countdown--> 
<div id="redirect_box" style="display:block;"> 
Redirecting in <span id="countdown"></span> <span id="notifier"></span> 
</div> 
<!--End Redirect Countdown--> 

<div id="buttonn">Skip >></div> 

跳過>>是假設是啓動定時器和ID按鈕,倒數是實際的倒計時。而且,通知者只是一個額外的ID。 我希望有人能幫助

+0

所以,你在哪裏綁定的onclick回電話? – mykhal

+0

在別人之前更好地提到它:* arguments.callee *在ES5嚴格模式中不受支持。不打擾我,但有人喜歡呻吟。 :-) – RobG

回答

0

首先,這樣的:

<div id="buttonn">Skip >></div> 

應該是這樣的:

<div id="buttonn">Skip &gt;&gt;</div> 

第二,如果是掛接跳過按鈕的計時器的代碼?我沒有看到你的問題。如果它缺少,那麼沒有按鈕div的點擊處理程序,所以這就是爲什麼沒有開始。

第三,我也想知道你的名字是否爲"buttonn",最後有兩個n?如果這是一個錯字,它也可以解釋爲什麼你的事件處理程序沒有被吸引。

+0

我知道所有這些......但我需要一個解釋,當我需要添加它。 ((#)button)(function(){但是當我把它添加到設置的計時器它沒有工作 – Shawn31313

+0

如果你剛剛問過如何掛鉤,會節省很多時間點擊該按鈕,你的帖子讓我們相信你認爲你已經迷上了,但它沒有工作。 – jfriend00

+0

是的, 對此我感到抱歉 – Shawn31313

0

你不應該創建一個使用數字文本對象的屬性。數將被轉換爲一個字符串,所以最好創建它們作爲首位字符串:

'20': function() { 

這樣,有一個在屬性名沒有歧義。

運行代碼,我得到的錯誤:

document.getElementById(notifier) is null 

與ID 倒計時移動元素上面的腳本修復。

要啓動計時器「onclick」事件,只需創建一個函數使調用SetTimer的:

function startTimer() { 
    setTimer(
     /* setTimer code */ 
    ); 
} 

然後從頁面啓動:

<button onclick="startTimer()">Start timer</button>