2012-12-18 15 views
1

對於不同的數量,單位價格會發生變化。我有一個數量下拉框,單價,小計和總額的跨度。使用selectfield值查找json表

我想這樣做,當下拉框更改時,單價會更新,然後小計將更新,然後總價將更新。到目前爲止,我使用:

$('#quantity').change(function() { 
    var pricetable = { 
     "1": "368", 
     "3": "338", 
     "6": "298" 
    } 

    $('#unitprice').text(pricetable.$('#quantity').val()); 
    $('#subtotal').text($('#unitprice').val() * $('#quantity').val()); 
    subtotalsum(); 
}); 

我知道pricetable.$('#quantity').val()是錯的,但不知道如何使用$('#quantity').val()來查找JSON價格表。

在此先感謝

回答

4

像這樣:

$('#unitprice').text(pricetable[$('#quantity').val()]); 
// Note the square brackets ---^--------------------^ 

你有什麼有一個JavaScript對象,而不是一個JSON表。 (JSON是用於數據交換的文本符號;這是源代碼,JSON是你用什麼存在的子集,這是JavaScript對象初始化語法。)

在JavaScript中,你可以指在對象上財產的方式有兩種:

  1. 使用點符號和文字屬性的名稱,例如,obj.foo

  2. 使用括號表示法和字符串屬性名稱,例如obj["foo"]。 (如果使用其他的東西不是一個字符串,它在使用前轉換爲字符串。)

在後一種情況下,該字符串可以是任意表達式的結果,它並沒有成爲一個文字。

所以在上面的代碼行,我們得到的quantity中,這將是一個字符串像"1""2"等的當前價值,我們用它來查找有關物業在pricetable對象。最後,我們用它來設置unitprice元素的文本。

3

.[]表示法是等效的,但[]表示法允許您輸入否則無效的鍵或動態鍵。

my_obj.prop; 
my_obj["prop"]; 
my_obj.some prop; // syntax error 
my_obj["some prop"]; // works 
my_obj[some_var]; // the value of some_var is used as the key