-2

我有一个在页面加载时执行的函数。该函数使用 setTimeout 每 30 秒执行一次。我希望能够启用和禁用 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>
4

2 回答 2

1

如果您onclick用双引号正确关闭属性,您的代码将起作用:

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

此外,这里有两个小建议来改进您的代码:

  • 如果您在函数中检查空字符串,为什么要0在单击链接时将输入值设置为?它有效,但如果您将值设置为''.

  • 使用setTimeout(and setInterval) 时,不要传递包含函数调用的字符串。它也有效,但很危险。改用这个:

    var sTo = setTimeout(mPb, 30000);
    
于 2012-06-19T23:01:24.337 回答
0

sTo needs to go outside of the mPb function, that way you can reference it from you onclick.

于 2012-06-19T22:59:20.967 回答