주어진 단어의 순열을 생성하는 알고리즘을 가지고 있습니다. 나는 setInterval()
을 사용하여 다음 순열을 생성하려고 시도하지만 함수는 한 번만 실행됩니다! 나는 이유를 알 수 없다. 오류 메시지가 표시되지 않습니다. 코드가 계속자바에서 작동하도록 setInterval()을 사용할 수 없습니다.
$를 호출 ('#의 StopBtn이') (클릭) :
이<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>
편집 : 아직, 또 다른 문제가. 여기에 내 코드
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입니다 기존의 click 이벤트 함수 다음에 실행하십시오. 그래서 저는 무한 루프에 있습니다. 간격 여부를 확인, 당신이 할 수있는 것은 두 번째 질문에 있습니다 :
편집t = setInterval(GeneratePermutation,10);
//^No parentheses
:
감사합니다.나는 1 시간 동안 여기에서 찔렀다. :) –
@ DanDinu : 두 번째 문제에 대한 해결책으로 내 대답을 업데이트했다. –
위대한 작품이지만 정말 이유를 이해할 수 없다. 버튼 ID를 StopBtn으로 변경하고 $ ('# StopBtn')을 호출합니다. GeneratePermtation()에서 click()을 클릭합니다. SubmitBtn.click()이 여전히 실행되는 이유는 무엇입니까? 그것은 다른 ID입니다. –