首先 - 我建议你这样做是错误的 - 你是从游戏的 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
更新
http://jsfiddle.net/HZX6k/6/
这个 fiddle 只是使用一个全局对象来跟踪游戏状态,它会随着 3、4、5、6 个字母计数单词中的每一个而增加计数和计数。