在TaffyDB查询中使用JS变量返回undefined

时间:2014-07-13 11:29:01

标签: javascript jquery taffydb

我有一个TaffyDB,其中包含来自RPG的项目的配方。每个项目都有一个布尔值来声明它是否在游戏中“混合”。

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}),它可以正常工作,但它只会报告并更新第一个复选框。

据我所知,在执行val等查询时,它不喜欢javascript变量checkedrecipes({id:val}),但对于文字{{1 }}

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

1 个答案:

答案 0 :(得分:1)

事实证明$(this).val()正在返回一个字符串,而不是一个int。

var val = $(this).val();

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