2013-03-12 52 views
2

嗨我試圖做拼字遊戲。拼字遊戲 - 與jquery一起添加字母的值

我想給每個字母一個值,然後將它們彙總在一起,如果輸入框更改。

我已經有一個搜索,並發現如何總結變化的數字,但我真的很難找出如何用數字替換一個字母的值。下面是一些代碼,我已經修改:

$(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和方框2中放入'a'並獲得總數4.

感謝您的幫助。

+0

目前,您如何將字母與值綁定?我可以爲您提供解決方案,但我不確定它是否適用於您 – 2013-03-12 14:05:13

+0

我正在嘗試使用關聯數組來執行此操作,然後使用.each來遍歷。任何解決方案都會有所幫助:) – 2013-03-12 14:11:03

回答

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/

+0

非常感謝您 - 我從來沒有想過這樣做! – 2013-03-12 14:41:35

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]; 

,沒有循環需要

+0

感謝您的快速響應 - 非常感謝您的幫助:D – 2013-03-12 14:42:18