0

我创建了一个拼写游戏,用户通过单击字母来拼写单词。为了向用户展示他们有多少错误和正确,我计算了正确和错误消息显示的次数并将其打印给用户。

这适用于正确答案,但不适用于错误答案。有人能告诉我为什么吗?

这是正确答案的脚本(工作正常)...

var completeLetters = $('.wordglow2').length;
var completeWords = (completeLetters / 3);

    if ($(right).show()) {
        $('.counter').html("Right Answers = " + completeWords).show();
    }

这是错误答案的答案(完全相同的逻辑,但不起作用!)...

var incompleteLetters = $('.wordglow4').length;
var incompleteWords = (incompleteLetters / 3);

    if ($(wrong).show()) {
        $('.counter2').html("Wrong Answers = " + incompleteWords).show();
    }

所以基本上“wordglow4”是在字母拼写错误时添加到字母的样式,“wordglow2”是添加到正确拼写字母的样式。

所有单词都是 3 个字母长,因此是“(incompleteLetters / 3)”

这是一个帮助http://jsfiddle.net/smilburn/Dxxmh/34/的小提琴

4

2 回答 2

2

“完整单词”计数器有效,因为当单词完成时,您总是在表格单元格上保留“.wo​​rdglow2”样式。因此$('.wordglow2').length将始终返回完整的字母(以及单词)

但是,不正确的单词将不起作用,因为一旦用户正确,样式就会更改(从 '.wordglow4' 到 '.wordglow2' - ps 您可能需要考虑使用更具描述性的类名 - 例如'.correctLetter' 和 '.wrongLetter')。因此,屏幕上的“.wordglow4”字母永远不会超过 3 个,因此不完整单词计数器永远不会超过 1。

要使不正确的单词计数器起作用,您需要在函数外部声明计数器,并执行以下操作:

var incompleteLetters = $('.wordglow4').length;
incompleteWords += (incompleteLetters / 3);

然后,这应该跟踪以前的失败,并为您提供所需的行为

于 2012-10-09T09:58:11.787 回答
1

与班级的表格单元格一起在黑板上指示的只有一个错误.wordglow4答案,这与正确.wordglow2答案在被正确猜测后保持班级的正确答案不同。

所以计数.wordglow2永远是正确的,而计数.wordglow4永远只会是 3。

您应该将count变量移到.click()事件之外,并在猜错单词时将其递增。

因此,在您的示例代码中,添加...

var animation = false;
var incompleteWords = 0; // <-- this line
$('.drag').on('click', function(e) {

和改变

var incompleteWords = (incompleteLetters / 3);

incompleteWords += (incompleteLetters / 3);
于 2012-10-09T11:39:51.990 回答