Mil*_*o-J 5 javascript recursion jquery loops if-statement
编辑**
我有这个点击事件
$('.next-question').click(function () {
$('td').removeClass('highlight-problem');
var r = rndWord;
while (r == rndWord) {
rndWord = Math.floor(Math.random() * (listOfWords.length));
}
$('td[data-word="' + listOfWords[rndWord].name + '"]').addClass('highlight-problem');
$('td[data-word=' + word + ']').removeClass('wrong-letter').removeClass('wrong-word').removeClass('right-letter');
var spellSpace = $('td[data-word=' + listOfWords[rndWord].name + ']').hasClass('right-word');
if (spellSpace) {
$('.next-question').trigger('click');
} else {
$("#hintSound").attr('src', listOfWords[rndWord].audio);
hintSound.play();
$("#hintPic").attr('src', listOfWords[rndWord].pic);
$('#hintPic').show();
$('#hintPicTitle').attr('title', listOfWords[rndWord].hint);
$('#hintPicTitle').show();
}
});
Run Code Online (Sandbox Code Playgroud)
在控制台中进行调试时,它表示此时too much recursion它处于某种无限循环状态.我认为这是因为声明中的trigger("click")事件if,因为我在网上看到了类似的东西.
基本上,我想说,如果给定的单词有类,right-word那么继续(因此触发),否则......
还有另一种方法来写它不会崩溃吗?
这是一个小提琴:http://jsfiddle.net/Dxxmh/112/
说明:单击右侧的字母拼写网格中突出显示的区域(帮助您拼写单词的图像不适用于小提琴,因此您必须使用控制台拼写它们,通过查找td)
我会做这样的事情:
if (spellSpace) {
if(score.right != 4)
$('.next-question').trigger('click');
Run Code Online (Sandbox Code Playgroud)
我看这if(score.right == 4)意味着游戏结束。结束后 - 你根本没有任何言语(或者只是没有“正确”的言语,不确定),这就是为什么它永远不会停止。它只是永远触发单击,而不是停止执行任何操作并等待用户单击“重新启动”按钮。
我想这个条件还不够。不确定错误单词的数量是如何计算和处理的。但它应该足以继续前进并根据您的程序逻辑构建正确的条件。您启动的任何递归(并且使用触发器(“单击”)启动它)都必须具有停止条件。