嗨,我正在尝试拼字游戏。
我想给每个字母一个值,然后在输入框改变时将它们加在一起。
我已经进行了搜索并找到了如何对变化进行求和,但我真的很难弄清楚如何用数字替换字母的值。以下是我修改过的一些代码:
$(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个。
谢谢你的帮助。
答案 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];
}