2010-12-13 20 views
0

私は、サウンドキャリブレーターシステムのようなJavaScript(+ JQuery)の関数を使用しようとしています。 1つの周波数帯から始まり、聞くことができるかどうかをユーザーに尋ねる。それからシステムの最低周波数を知ることができるかどうかを判断し、そうでない場合は、次の帯域まで上昇し、最低周波数が見つかる。毎回JavaScript関数が2回繰り返してループします

しかし、私がこの関数を実行すると、毎回2回何回も実行されているようです。 testFreqNumアラートから初めて1回追加、2回目の追加、3回目の4回、8回の追加などが表示されます。

修正するのは簡単なエラーでしょう。 JavaScriptが新しくなったので、すぐに見ることができますか?ありがとう。

function testFreq(band, testType){ 

if (testType == 'testLow') { 
    $('#calibrationText').html('<h5>Testing ' + freqs[band] + 'Hz...</h>'); 
    playSound('Tones', band); 
    //window.setTimeout(function(){ 
    $('#calibrationText').html('<h5>Could you hear ' + freqs[band] + 'Hz clearly?</h>'); 
    $('#yes').fadeIn(500).click(function(){ 

     bandMin = band;//sets randGen's min availible band value 
     testFreqNum = 31;//sets test frequency to upper high 
     testFreq(testFreqNum, 'testHigh');//runs calibrator again in high mode starting band 31 
     $('#yes').fadeOut(500); 
     $('#no').fadeOut(500); 
    }); 

    $('#no').fadeIn(500).click(function(){ 

     testFreqNum = testFreqNum + 1; 
     alert(testFreqNum); 
     testFreq(testFreqNum, 'testLow');//runs calibrator again in low mode 
     //$('#yes').fadeOut(500); 
     //$('#no').fadeOut(500); 
    }); 
    // }, 4000); 
} 

...残り...あなたはそれを変更したい場合は、このように、ちょうど.unbind()まず、各時間追加クリックハンドラをバインドしている

答えて

4

... #noと同じです。それ以外の場合は.click()と呼び出すたびに新しいclickイベントハンドラが追加されますが、前のイベントハンドラは削除されないため、両方が実行されます... dは毎回追加されます。

関連する問題