在JQuery/Javascript中使用动态变量名进行加减

在JQuery/Javascript中使用动态变量名进行加减,javascript,jquery,Javascript,Jquery,我正在为我的餐厅开发一个库存检查表。我的想法是,例如,我可以称一瓶半满的伏特加!根据该重量,以毫升为单位的体积将根据重量调节器和产品密度自动计算 代码是用PHP自动生成的。下面是一个例子,我选择了哪瓶伏特加,并基于这个选择,我想在跨度“1_liveWeight”中显示数量。由于经验有限,我遇到的问题是这一行代码: var qty = (weight - adjuster) * density; 我希望它的功能如下: var qty = (weight - adjuster_!value sel

我正在为我的餐厅开发一个库存检查表。我的想法是,例如,我可以称一瓶半满的伏特加!根据该重量,以毫升为单位的体积将根据重量调节器和产品密度自动计算

代码是用PHP自动生成的。下面是一个例子,我选择了哪瓶伏特加,并基于这个选择,我想在跨度“1_liveWeight”中显示数量。由于经验有限,我遇到的问题是这一行代码:

var qty = (weight - adjuster) * density;
我希望它的功能如下:

var qty = (weight - adjuster_!value selected from item_1!) * density!value selected from item_1!
两条线之间的点点滴滴!在我要插入值的位置

下面是php生成的代码摘录

HTML

JQuery

$(document).ready(function(){
   $("#item_1").change(function(){
       var item = $('#item_1').val();
       var adjuster3 = $('#adjuster_3').val();
       var density3 = $('#density_3').val();
       var adjuster4 = $('#adjuster_4').val();
       var density4 = $('#density_4').val();
       var weight = $('#weight_1').val();
       var qty = (weight - adjuster)*density+item;
       $("#1_liveWeight").html("<b>"+ qty +"</b>");
    });
});
我希望我已经充分解释了我的问题!谢谢你的帮助


DB

您需要根据项目选择分配正确的调节器和密度变量:

 $(document).ready(function(){
       $("#item_1").change(function(){
           var item = $('#item_1').val();
           var adjuster3 = $('#adjuster_3').val();
           var density3 = $('#density_3').val();
           var adjuster4 = $('#adjuster_4').val();
           var density4 = $('#density_4').val();
           var weight = $('#weight_1').val();

           weight = Number(weight);
           var adjuster, density;
           if(item == 3){
              adjuster = Number(adjuster3);
              density = Number(density3);
           }
           else if(item == 4){
              adjuster = Number(adjuster4);
              density = Number(density4);
           }
           var qty = (weight - adjuster) * density;
           $("#1_liveWeight").html("<b>"+ qty +"</b>");
        });
    });

我可能会这样做:

var qty = (weight - adjuster_!value selected from item_1!) * density!value selected from item_1!
$document.readyfunction{ var密度=0; var调节器=0; $item_1.changefunction{ 重新计算wgt; }; $weight_1.keyup函数{ 重新计算wgt; }; 重新计算wgt; 函数重新计算EWGT{ var item=$'item_1'.val; var调节器=$‘调节器‘+item.val; var density=$'density_'+item.val; var-weight=$'weight_1'.val; 变量数量=重量-调节器*密度+项目; $1_liveWeight.html+数量+; } }; 斯米诺伏特加1000ml 绝对伏特加750ml
0我通过学习eval解决了这个问题

它按预期工作:

eval("var chosenAdjuster = adjuster"+item);
eval("var chosenDensity = density"+item);
var qty = (weight - chosenAdjuster) * chosenDensity;

我想说伏特加确实帮助我理解了很多东西,但我还是搞不清楚——你需要的是所选产品的详细信息,还是当你的下拉列表发生变化时所有产品的详细信息。不管怎么说,这里有些东西

 $(document).ready(function(){
   $("#item_1").change(function(){
   var item = $('#item_1').val();     // may be 3 or 4 or whatever depends on choice
   var adjuster = $('#adjuster_'+ item).val(); // dynamic selector
   var density = $('#density_'+item).val();
   var weight = $('#weight_'+item).val();
   var qty = (weight - adjuster)*density; // density is constant at a given temp. for given liquid why were you chaging this? dilluting? 
   $("#"+item+"_liveWeight").html("<b>"+ qty +"</b>");
  });
});

这可能有用,但这是可怕的练习,不要这样做。建议你看看其他贴出的答案。出于好奇,为什么是糟糕的练习?发布的其他选项并没有真正考虑到脚本是由php生成的,有些产品可能有1或2个选项,但其他产品可能有更多选项。让php按照上面的建议生成代码与这个小的2行程序相比是一件痛苦的事情。。。如果添加更多选项,则无需更改我的JavaScript中的任何内容。只需回显另一个选项,调整器的另一个匹配输入,以及HTML中密度的另一个输入,就像您为解决方案所做的一样,还有其他原因。谷歌。