0

RPG のアイテムのレシピを含む TaffyDB があります。各アイテムには、ゲーム内で「混合」されているかどうかを宣言するブール値があります。

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

HTML テーブルが生成され、各レシピには「混合」変数を表すチェックボックスがあります。各チェックボックスには、データベース内のアイテムの ID に対応するvalue=X場所があります。Xチェックボックスの変更を検出し、次を使用してデータを更新しようとしました:

$('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.mixedundefined常に が返されます。update 呼び出しでも値は変更されません。ただし、すべてのクエリを に変更すると、recipes({id:0})正常に動作しますが、最初のチェックボックスのみが報告および更新されます。

私が知る限り、それは javascript 変数が好きではなく、などのクエリvalchecked実行するときは好きではありませんrecipes({id:val})が、リテラル では問題ありません0

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

4

1 に答える 1

1

$(this).val()int ではなく文字列を返していることが判明しました。

var val = $(this).val();に置き換えvar val = parseInt($(this).val());

于 2014-08-07T01:06:58.570 に答える