-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>

また、コードを改善するための 2 つの小さな提案を次に示します。

  • 関数内の空の文字列をチェックしている場合0、リンクをクリックしたときに入力値を に設定するのはなぜですか? 動作しますが、値を に設定するとより明確になります''

  • setTimeout(および)を使用する場合setIntervalは、関数呼び出しを含む文字列を渡さないでください。それも機能しますが、危険です。代わりにこれを使用してください:

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

sTo は mPb 関数の外側に移動する必要があります。そうすれば、onclick から参照できます。

于 2012-06-19T22:59:20.967 に答える