我有一個算法可以生成給定單詞的排列。我試圖使用setInterval()
來生成下一個排列,但該函數只運行一次!我無法弄清楚爲什麼。我沒有收到任何錯誤消息。 這裏是我的代碼我不能讓setInterval()在Javascript中工作
var splitted;
var t;
$(document).ready(function() {
$('#SubmitBtn').click(function() {
//change Start to Stop and change button id
$('#SubmitBtn').attr('id','StopBtn').attr('value','Stop');
//and add click event to it
$('#StopBtn').click(function() {
clearInterval(t);
$('#StopBtn').attr('value','Submit');
$('StopBtn').attr('id','SubmitBtn');
});
if ($('#AnagramTxtArea').val().length>0)
$('#AnagramTxtArea').text('');
var inputTxt = $('#anagram').val();
splitted = inputTxt.split("");
splitted.sort(); //first sort the array in order to generate permutations
$('#AnagramTxtArea').append(splitted.join("") + " ");
t= setInterval(GeneratePermutation(),10);
});
});
var AnagramObj = new Anagram();
function GeneratePermutation() {
splitted = AnagramObj.NextPermutation(splitted);
if (splitted!=null)
$('#AnagramTxtArea').append(splitted.join("") + " ");
else
$('#StopBtn').click();
}
和HTML:
<div id="content">
<input id="anagram" type="text" placeholder="Insert your text here" maxlength="80"/> <br />
<input id="SubmitBtn" type="submit" value="submit" />
<br />
<textarea id="AnagramTxtArea" readonly="readonly"></textarea>
</div>
編輯: 然而,另一個問題:
當調用$( '#StopBtn')點擊()代碼繼續在存在點擊事件功能後執行。所以我陷入了無限循環。
非常感謝。我已經在這裏停留了1小時:) –
@DanDinu:我更新了我的答案,並解決了第二個問題。 –
很好,但我不明白爲什麼。您將按鈕ID更改爲StopBtn,並從GeneratePermtation()中調用$('#StopBtn')。click()。爲什麼它仍然會觸發SubmitBtn.click()?這是另一個ID .. –