2012-02-12 13 views
1

私は次のコードを使用しています。唯一の警告はalert(t)です。私はunsafeWindow.setTimeoutwindow.setTimeout、およびsetIntervalを含む他のバリエーションを試しました。何も動作していません。Greasemonkey setTimeoutとsetIntervalがトリガーしない

$('#on').change(function() { t = setTimeout(function() { starttimer() },1000);timer_on = true;alert(t); }); 
    function starttimer() { 
    alert('triggered'); 
     if (timer_on) { 
      alert('timerstarted'); 
      t = setTimeout(function() { startimer() },1000); 
      } 
    } 

編集:エラーもありません。スクリプトは引き続き実行され、tは通常の値を持ちます。関数は決して実行されません。

答えて

1

このようなコードは作成しないでください!愛することを学ぶjsBeautifierJSLint

FFとGreasemonkeyのどのバージョンを使用していますか?一部のコンボは、タイマーやイベントリスナー内のアラートに問題がありました。

とにかく、$('#time').val()はおそらく存在しないか、そうではないと思われます。 $('#time')<input>を参照していますか?

は、このコードを試してみてください。

// t and timer_on are global variables. 

$('#on').change (function() { 
    var timeVal = $('#time').val() || 1; //-- Account for empty and NaN 
    timeVal  = parseInt (timeVal, 10) * 1000; 

    alert ('Time val = ' + timeVal); 
    t   = setTimeout (starttimer, timeVal); 
    timer_on = true; 
    alert (t); 
}); 

function starttimer() { 
    alert ('triggered'); 
    if (timer_on) { 
     alert ('timerstarted'); 
     var timeVal = $('#time').val() || 1; 
     timeVal  = parseInt (timeVal, 10) * 1000; 

     alert ('Time val = ' + timeVal); 
     t   = setTimeout (starttimer, timeVal); 
    } 
} 
+0

JSBeautifier - リンクのおかげで、私はそれを次の時間を掲示する前に、そのを通じて私のコードを実行します;)。 val()DIDが存在していて、checkTimeoutを2つのパラメータで追加して両方を警告し、タイマーをまだ使っていることを確認しましたそれ以降は走らなかった。 –

+0

'1'および/または' parseInt'にデフォルト設定するとそれを説明できます。また、ノードが入力でない場合、期待通りにjQuery 'val()'が動作しないことがあります。 –

+0

タイマーの上の正確なコードを使用しています。再び。 –

関連する問題