在我的拼写游戏中,有3-6个不同大小的单词。一旦在网格中完成了一定数量的单词,网格的其余部分就会消失。我希望它能够将所有单词大小的变体加起来而不仅仅考虑一个。例如,一旦两个单词完成,我现在可以使用fadeOut。问题是,当两个,三个字母的单词完成或两个四个字母的单词完成时,它才会消失。
var completeLetters = $('.wordglow2').length;
var threeLetter = (completeLetters / 3);
var fourLetter = (completeLetters / 4);
var fiveLetter = (completeLetters / 5);
var sixLetter = (completeLetters / 6);
if (threeLetter == 2) {
$('table').fadeOut(2000);
}
if (fourLetter == 2) {
$('table').fadeOut(2000);
}
if (fiveLetter == 2) {
$('table').fadeOut(2000);
}
if (sixLetter== 2) {
$('table').fadeOut(2000);
}
有没有办法让变量结合所有单词,然后为它创建一个if语句?
答案 0 :(得分:3)
首先 - 我建议你这样做是错误的 - 你正在从游戏的HTML / CSS表示中确定游戏状态。我建议您创建一个表示游戏状态的对象,然后使用此对象来确定您需要对HTML / CSS表示进行的操作。这也将使你在这里做的事情变得更加容易。
例如,你最终可能会说... ...
if (gamestate.wordscomplete == 3) {//fade board//}
...这比挖掘HTML更令人愉快。但我离题了......
好的,所以如果正确的话,课程wordglow2
会被添加到字母中。网格中的每个<tr>
都可以包含一个单词。所以......
function gamestate() {
var words = []; //new array to store completed word counts
var wordscompleted = 0; //overall word count
//create an entry for 3,4,5, and 6 letter words
for (var wc = 3; wc <=6 ; wc++) {words[wc] = 0;}
$('table.tablestyle > tr').each( function(i,el) {
// get the number of complete letters in this row
var wordlength = $(el).find('.wordglow2').length;
if (wordlength >=3 && wordlength <= 6) {
// a completed word should not be outside of this range anyway
words[wordlength]++; //increment the appropriate counter
wordscompleted++; //increment overall counter
}
});
//return a gamestate object
return { wordscompleted : wordscompleted , words : words };
};
上面的函数将查看游戏表中的每一行并计算wordglow2
个单元格的数量。如果它在3和6之间,则总计数器递增,并且每个字长的计数器也递增。
可以按如下方式使用......
var gs = gamestate();
gs.wordscompleted //total words completed
gs.words[3] //total 3-letter words completed
gs.words[4] //total 4-letter words completed etc etc
<强>更新强>
这个小提琴只是使用一个全局对象来跟踪游戏状态,增加计数和每个3,4,5,6个字母计数单词的计数。