0

私の「#picknext」関数は、グリッド内の次の単語を選択して、ユーザーにスペルを入力します。現時点では、同じ行を2回続けて選択する場合とは別に、その役割を果たします。

どうすればこれを防ぐことができますか?

$('#pickNext').mousedown(function() {
    // remove the class from all td's
    $('td').removeClass('spellword');
    // pick a random word
    rndWord = Math.floor(Math.random() * (listOfWords.length));

    // apply class to all cells containing a letter from that word
    $('td[data-word="' + listOfWords[rndWord].name + '"]').addClass('spellword');
});

HTML .. ..

<ul style="display:none;" id="wordlist">
  <li data-word="mum" data-audio="http://www.wav-sounds.com/cartoon/daffyduck1.wav" data-pic="http://www.clker.com/cliparts/5/e/7/f/1195445022768793934Gerald_G_Lady_Face_Cartoon_1.svg.med.png"></li>
  <li data-word="cat" data-audio="http://www.wav-sounds.com/cartoon/porkypig1.wav" data-pic="http://www.clker.com/cliparts/c/9/9/5/119543969236915703Gerald_G_Cartoon_Cat_Face.svg.med.png"></li>
  <li data-word="dog" data-audio="http://www.wav-sounds.com/cartoon/porkypig1.wav" data-pic="http://www.clker.com/cliparts/e/9/4/1/1195440435939167766Gerald_G_Dog_Face_Cartoon_-_World_Label_1.svg.med.png"></li>
  <li data-word="bug" data-audio="http://www.wav-sounds.com/cartoon/porkypig1.wav" data-pic="http://www.clker.com/cliparts/4/b/4/2/1216180545881311858laurent_scarabe.svg.med.png"></li>
  <li data-word="rat" data-audio="http://www.wav-sounds.com/cartoon/daffyduck1.wav" data-pic="http://www.clker.com/cliparts/C/j/X/e/k/D/mouse-md.png"></li>
  <li data-word="dad" data-audio="http://www.wav-sounds.com/cartoon/daffyduck1.wav" data-pic="http://www.clker.com/cliparts/H/I/n/C/p/Z/bald-man-face-with-a-mustache-md.png"></li>

4

2 に答える 2

2

rndWord変数をイベントリスナーのスコープ外のどこかに格納する必要があります。親スコープか、this.data('rndWord')を使用すると、次のようになります。

var r = rndWord;
while (r == rndWord) {
     rndWord = Math.floor(Math.random() * (listOfWords.length));
}
于 2012-07-31T15:22:34.167 に答える
0

私があなたを正しく理解しているかどうかはわかりませんが..多分、多分大きい..

$('td[data-word="' + listOfWords[rndWord].name + '"]').not($(this)).addClass('spellword');
于 2012-07-31T15:24:05.037 に答える