在TaffyDB查询中使用JS变量返回未定义

Using JS variable in TaffyDB query returns undefined

本文关键字:JS 变量 返回 未定义 TaffyDB 查询      更新时间:2023-09-26

我有一个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表,其中每个配方都有一个表示"mixed"变量的复选框。每个复选框都有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。update调用也不会更改值。然而,如果我把所有的查询改为recipes({id:0}),它工作得很好,但它只报告和更新第一个复选框。

据我所知,它不喜欢javascript变量valchecked时做做查询,如recipes({id:val}),但很好与文字0

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

结果显示$(this).val()返回的是字符串,而不是整型。

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