Установить класс на буквы в Pangram - PullRequest
1 голос
/ 08 января 2011

Я пытаюсь установить правильный класс на отключенные элементы (каждая буква в алфавите).Каждый элемент имеет идентификатор от # alpha_0 до # alpha_25.Если вводимая буква встречается один раз, установите эту букву зеленым.Если буква встречается более одного раза, установите ее красным.Если этого не происходит, то ничего (черный)

Код, приведенный ниже, просто не работает, и я его набрал.

var isPangram = function() {
 var s = $('#input').val().toLowerCase();
 console.log(s);
 var alpha = letters[getAlphabet()].join('');
 console.log(alpha);
 var len = alpha.length;
 for (var i = 0; i < len; i++) {
  if (s.indexOf(alpha.charAt(i)) != -1) {
   if ($('#alpha_'+i).hasClass('green')) {
    // already matched, go red
   } else {
    // not matched, go green
   }
  } else {
   // no match
  }
 }
}

1 Ответ

0 голосов
/ 08 января 2011

Что ж, проще всего, если сначала быстро выяснить количество для каждой буквы, а затем установить классы.

(function($) {
  function getLetterCount(text) {
    var alphabet = 'abcdefghijklmnopqrstuvwxyz';
    var alphabetSet = alphabet.split('');

    var letterCount = {};
    $.each(alphabetSet, function() {
      letterCount[this] = 0;
    });

    var cleanText = text.toLowerCase().replace(/[^a-z]/g, '');

    $.each(cleanText.split(''), function() {
      letterCount[this]++;
    });

    return letterCount;
  }

  function setLetterClasses(letterCounts) {
    $('.letter').removeClass('green').removeClass('red');

    $.each(letterCounts, function(letter, count) {
      if (count > 0) {
        $('#alpha_' . (letter.charCodeAt(0) - 'a'.charCodeAt(0))).addClass(count > 1 ? 'red' : 'green');
      }
    });
  }

  function isPangram() {
    var text = $('#input').val();
    var letterCount = getLetterCount(text);

    setLetterClasses(letterCount);
  }
})(jQuery);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...