2014-07-13 34 views
0

我有一個TaffyDB包含來自RPG的項目的食譜。每個項目都有一個布爾值來聲明它是否在遊戲中「混合」。在TaffyDB查詢中使用JS變量返回undefined

var recipes = TAFFY([ 
    {id:0, name:'Potion', mixed:false}, 
    {id:1, name:'Hi-Potion', mixed:false}, 
    {id:2, name:'Mega-Potion', mixed:false} 
]); 

生成一個HTML表格,每個配方都有一個表示「混合」變量的複選框。每個複選框有value=X,其中X對應於數據庫中項目的ID。我發現複選框的變化和嘗試使用更新數據如下:

$('input:checkbox').on('change', function() { 
    var val = $(this).val(); 
    var checked = $(this).is(':checked'); 

    recipes({id:val}).update({mixed:checked}); 

    alert('Updated recipe id: ' + val + 
     '\nRecipe: ' + recipes({id:val}).first().name + 
     '\nValue should be ' + checked + 
     '\nValue is ' + recipes({id:val}).first().mixed); 
} 

當試圖通過使用recipes({id:val}).first().name.mixed得到變量,總是返回undefined。更新調用也不會更改這些值。但是,如果我將所有查詢更改爲recipes({id:0}),它都可以正常工作,但只會報告並更新第一個複選框。

據我所知,它不喜歡javascript變量valchecked進行查詢時,如recipes({id:val}),但在字面值0下正常。

的jsfiddle:http://jsfiddle.net/w6g6W/12/

回答

1

原來$(this).val()是返回一個字符串,而不是一個int。

代替var val = $(this).val();var val = parseInt($(this).val());