首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Pangram中设置字母类

在Pangram中设置字母类
EN

Stack Overflow用户
提问于 2011-01-08 22:28:17
回答 1查看 319关注 0票数 1

我尝试在set元素(字母表中的每个字母)上设置正确的类。每个元素都有到#alpha_25的id #alpha_0。如果输入中的字母出现一次,则将该字母设置为绿色。如果字母出现多次,请将其设置为红色。如果它没有发生,那么什么都不会发生(黑色)

下面的代码只是我拼凑出来的一些不起作用的东西。

代码语言:javascript
运行
复制
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
  }
 }
}
EN

回答 1

Stack Overflow用户

发布于 2011-01-08 23:17:43

如果你先快速找到每个字母的计数,然后设置类,这是最简单的。

代码语言:javascript
运行
复制
(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);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4634318

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档