拼字游戏 - 添加字母值和jquery

时间:2013-03-12 11:52:27

标签: jquery html

嗨,我正在尝试拼字游戏。

我想给每个字母一个值,然后在输入框改变时将它们加在一起。

我已经进行了搜索并找到了如何对变化进行求和,但我真的很难弄清楚如何用数字替换字母的值。以下是我修改过的一些代码:

$(document).on("change", "input[id ^= 'r1box']", function() {

    var sum = 0;

    $("input[id ^= 'r1box']").each(function(){
        sum += +$(this).val();
    });

    $("#r1totbox_id").val(sum);
});

我有7个盒子,其id以'r1box'开头,然后是一个ID为'r1totbox_id'的盒子。目前,如果我输入数字,我得到一个总数,但我希望能够在方框1中放置'a',在方框2中放入'b',并且总共得到4个。

谢谢你的帮助。

2 个答案:

答案 0 :(得分:0)

var convert_letters_to_numbers(letter) {
    letter = letter.toLowerCase(); //this prevents any case-sensitive problem
    if (letter == 'a') return 1;
    ...
    /* etc etc etc */
}

然后,在你的代码中:

sum += convert_letters_to_numbers($(this).val());   

这假设你将在每场比赛中使用相同的值。如果你想让它变得动态,你应该添加一个字典用于映射(或者更好的是,一个json对象,所以你可以在其他地方生成它们)

var mapping_array = new Array();
mapping_array['a'] = 3;
mapping_array['b'] = 1;
....

然后遍历它并返回相应的值

上次发表评论:

var dictionary = {"a":1, "b":2};

你的转换函数应该只做一个简单的return语句:

return dictionary[letter];

并且不需要循环

答案 1 :(得分:0)

您需要一个数组映射字母到拼字游戏点值(Source):

var points = [1, 3, 3, 2, 1, 4, 2, 4, 1, 8, 5, 1, 3, 1, 1, 3, 10, 1, 1, 1, 1, 4, 4, 8, 4, 10];

然后你可以获取输入并将其匹配到正确的点值,通过转换为大写并从ASCII代码值中减去65(A)来获得点数组的索引:

var letter = $(this).val().toUpperCase();
if (letter.length == 1) {
    var letterIndex = letter.charCodeAt(0) - 65;
    sum += points[letterIndex];
}

演示:http://jsfiddle.net/Cp3Fd/