2012-06-19 101 views
-2

我有一個在頁面加載時執行的函數。該函數使用setTimeout每30秒執行一次。我希望能夠啓用和禁用的setTimeout的onclick我有下面的下面的代碼...如何啓用和禁用setTimeout onclick

<input id="vw" value="" type="hidden"> 
    <a href="#" onclick="document.getElementById('vw').value='0';>click here</a> 

    <script> 
    /* JAVASCRIPT BELOW */ 
    function mPb(){ 

    var vw = escape(document.getElementById('vw').value); 

    if(vw == ''){//DO NOT SWITCH VIEW IF EMPTY 

    var sTo = setTimeout("mPb()", 30000); 

    } else { 

    clearTimeout(sTo); 

    } 

}//END VIEW MY FEED 

    //ON SERVICE LOAD DISPLAY SHITE INSTEAD OF ONLOAD 
    window.addEventListener ? 
    window.addEventListener("load",mPb,false) : 
    window.attachEvent && window.attachEvent("onload",mPb); 
    </script> 
+0

而問題是......? –

+0

...問題是他在'onclick'結尾缺少一個結束語:'onclick =「document.getElementById('vw')。value ='0';'' – bfavaretto

+0

如果它每30秒執行一次,shouldn你用'setInterval'代替'setTimeout'嗎? – Neil

回答

0

STO需要去外面的MPB的功能,這樣你可以從你的onclick引用它。

1

你的代碼的工作,如果你正確地以雙引號關閉onclick屬性:

<a href="#" onclick="document.getElementById('vw').value='0';">click here</a> 

此外,何去何從兩個小建議,以改善你的代碼:

  • 如果您正在檢查對於函數中的空字符串,爲什麼當您點擊鏈接時將輸入值設置爲0?它可以工作,但如果將值設置爲'',則會更清楚。

  • 使用setTimeout(和setInterval)時,不要傳遞包含函數調用的字符串。它也可以工作,但它是dangerous。使用這個來代替:

    var sTo = setTimeout(mPb, 30000); 
    
+0

代碼仍然不能正常工作... 'if(vw ==''){0} {0} {0} {var sTo = setTimeout(mPb,30000); } else { clearTimeout(sTo); }' – Dango

+0

您是否修復了鏈接上的報價?代碼確實有效,請檢查[this](http://jsfiddle.net/WdSdQ/)並打開控制檯查看每秒記錄的消息,直到您單擊鏈接。 – bfavaretto

+0

你是對的我的原始代碼正在努力工作,但似乎有一個錯誤在我的代碼中的其他地方。非常感謝你! – Dango