Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 添加到另一个函数中声明的值_Javascript_Jquery - Fatal编程技术网

Javascript 添加到另一个函数中声明的值

Javascript 添加到另一个函数中声明的值,javascript,jquery,Javascript,Jquery,这很难解释,你可以看到一个 我有一个products表,可以动态创建/删除新的产品线。我还有一个总计表,将每一行的总计汇总在一起 在这个总计框中,我有一个旅行框,我想将其添加到总计中,但我遇到的问题是旅行输入在汇总所有值的表之外。我可以用一个新的总数替换总数,但我似乎不能称之为小计,将旅行和输出相加为总计 HTML <table class="order-details"> <tbody> <tr> <td><

这很难解释,你可以看到一个

我有一个products表,可以动态创建/删除新的产品线。我还有一个总计表,将每一行的总计汇总在一起

在这个总计框中,我有一个旅行框,我想将其添加到总计中,但我遇到的问题是旅行输入在汇总所有值的表之外。我可以用一个新的总数替换总数,但我似乎不能称之为小计,将旅行和输出相加为总计

HTML

<table class="order-details">
    <tbody>
    <tr>
        <td><input type="text" value="" name="" placeholder="Work Description" class="wei-add-field description 1"/></td>
        <td><input type="text" value="" name="" placeholder="QTY" class="wei-add-field quantity 1" /></td>
        <td><input type="text" value="" name="" placeholder="$0.00" class="wei-add-field unit-price 1"/></td>
        <td><input type="text" value="" name="" placeholder="$0.00" class="wei-add-field price-total 1" id=""/></td>
        <td> </td>
    </tr>
    </tbody>
</table>

<div class="wei-add-service"><a href="#" class="button-secondary wei-add-service-button">Add Item</a></div>

<table class="wei-add-totals">
    <tr>
        <td width="50%">Sub Total</td>
        <td width="50%" class="wie-add-subtotal"> </td>
    </tr>

    <tr class="alternate travel">
        <td>Travel</td>
        <td><input type="text" value="" placeholder="0.00" class="wei-add-field travel" /></td>
    </tr>
    <tr>
        <td>Taxes</td>
        <td><input type="text" value="" placeholder="0.00" class="wei-add-field wie-total-taxes" id="wei-disabled" disabled/> </td>
    </tr>
    <tr class="alternate total">
        <td>Total</td>
        <td><input type="text" value="" placeholder="0.00" class="wei-add-field wie-grand-total" id="wei-disabled" disabled/></td>
    </tr>
</table>

小计
旅行
税
全部的
Javascript

var counter = 1;
var testArray =  [ 2,3,4,5];

jQuery('a.wei-add-service-button').click(function(event){
    event.preventDefault();
    counter++;
    var newRow = jQuery('<tr><td><input type="text" class="wei-add-field description ' + counter + '"/></td><td><input type="text" class="wei-add-field quantity ' + counter + '" /></td><td><input type="text" class="wei-add-field unit-price ' + counter + '"/></td><td><input type="text" value="" name="" placeholder="$0.00" class="wei-add-field price-total ' + counter + '" id=""/></td><td><a href="#">X</a></td></tr>');
    jQuery('table.order-details').append(newRow);
});


jQuery('table.order-details').on('click','tr a',function(e){
    e.preventDefault();
    var table = $(this).closest('table');
    jQuery(this).parents('tr').remove();
    reCalculate.call( table );
});


jQuery('table.order-details').on("keyup", "tr", reCalculate);

function reCalculate() {
    var grandTotal = 0;
    jQuery(this).closest('table').find('tr').each(function() {
        var row = jQuery(this);
        var value = +jQuery( ".unit-price", row ).val();
        var value2 = +jQuery( ".quantity", row ).val();
        var total = value * value2;
        grandTotal += total;
        jQuery( ".wei-add-field.price-total", row ).val( '$' + total.toFixed(2) );
    });
    jQuery(".wie-add-subtotal").text( '$' + grandTotal.toFixed(2));
}
var计数器=1;
var testArray=[2,3,4,5];
jQuery('a.wei-add-service-button')。单击(函数(事件){
event.preventDefault();
计数器++;
var newRow=jQuery(“”);
jQuery('table.order details').append(newRow);
});
jQuery('table.order details')。on('click','tr a',函数(e){
e、 预防默认值();
var table=$(this).closest('table');
jQuery(this.parents('tr').remove();
重新计算。调用(表);
});
jQuery('table.order details')。在(“keyup”,“tr”,重新计算)上;
函数重新计算(){
var-grandTotal=0;
jQuery(this).closest('table').find('tr').each(function(){
var row=jQuery(this);
var值=+jQuery(“.unit price”,行).val();
var value2=+jQuery(“.quantity”,行).val();
var总计=价值*价值2;
总计+=总计;
jQuery(“.wei add field.price total”,行).val(“$”+toFixed.toFixed(2));
});
jQuery(“.wie add subtotal”).text(“$”+grandTotal.toFixed(2));
}

我不认为,考虑到创建这个的任务,我会选择像您那样做

但是,使用现有代码,您可以在更改、粘贴或键控时绑定行程值,并在任何这些操作上运行函数。在该函数中,我使用正则表达式从“.wie grand total”中删除了特殊字符($),并使用parseFloat将“.wie grand total”的值转换为浮点。我还使用parseFloat将行程值转换为浮点值。然后,我把它们加在一起,得出“wie grand total”的新值

/*自注释以来新增*/
//添加到HTML新表中
/*新的自评论*/
/*新的自评论*/
$('#travelHid').hide();
var-travelVal=0;
函数updateTravelVal(travelVal){
var travelVal=travelVal;
$(#travelHid').val(travelVal);
};
updateTravelVal();
$(“#travelVis”).bind(“更改粘贴键控”,函数(){
var noChars=jQuery(“.wie总计”).val()。替换(/[^0-9.]/g,”);
var newTot=parseFloat(noChars)+parseFloat($(this.val());
jQuery(“.wie总计”).val(“$”+newTot.toFixed(2));
//增加了错误检查
var checkError=jQuery(“.wie总计”).val(“$”+newTot.toFixed(2));
//如果输入中的值为NaN,则使用travelVal
//因为没有价值。我们的总价值还没有
if(检查错误类型!=“字符串”){
jQuery(“.wie总计”).val(“$”+travelVal.toFixed(2))
}else if(typeof checkError==“string”){
jQuery(“.wie总计”).val(“$”+newTot.toFixed(2))
} 
/*新的自评论*/
更新travelVal(travelVal);
});
用于演示的小提琴(现在每个评论都有hiddenVal)

这里唯一的潜在问题是,只有当您在#TravelVis中更改、粘贴或输入值时,它才会运行

/自评论后解释/

我在html中添加了一个带有输入的td。输入id=“travelHid”。然后,我通过应用jQuery方法.hide()使其不可见。然后,我将travelVal暴露于全局范围,并使用零值启动它,然后创建一个函数来更新该值

在该函数中,我将值设置为参数travelVal,如果没有参数,则将值设置为0。然后我马上叫它

然后,我使用bind函数中的arg travelVal向该函数添加了一个调用,以便在存在值时对其进行更新

最后:

只需向表中添加一行,该行具有预设值Travel和Quant 1


此问题中的演示和代码不匹配。使用
jQuery(“.wie add subtotal”).text
而不是
jQuery(.wie add subtotal”).val
,因为
.wie add subtotal
不是
输入
字段。发货输入在哪里?发货。。。对不起,这叫旅行。小计正确地显示了我所有的一切,我只是不知道如何将“旅行”也添加到总数中。
“输入”
oninput
事件)是
“更改粘贴键控”
的缩写。现在的问题是,当产品表中的值被更改或删除时,它不会将旅行添加到其中。。。也许这就是为什么你会有不同的做法。在更改产品数据时,是否有更好的方法(除非太难解释)或保持发货量增加的方法?您可以在行中添加隐藏的td,并将其绑定到您的总价值,然后在计算新产品数据时使用该值total@BrandonTurpy我只想添加一个按钮,上面写着“添加旅行”并让它创建一行,允许您输入行程值
/* NEW SINCE COMMENTS */

//Add to your HTML New table

<table class="order-details">
  <tbody>
  <tr>
      <td><input type="text" value="" name="" placeholder="Work Description" class="wei-add-field description 1"/></td>
      <td><input type="text" value="" name="" placeholder="QTY" class="wei-add-field quantity 1" /></td>
      <td><input type="text" value="" name="" placeholder="$0.00" class="wei-add-field unit-price 1"/></td>
      <td><input type="text" value="" name="" placeholder="$0.00" class="wei-add-field price-total 1" id=""/></td>

      /* NEW SINCE COMMENTS*/
      <td><input type="text" id="travelHid" value=""></td>

      <td> </td>
  </tr>
  </tbody>
</table>



/* NEW SINCE COMMENTS */

$('#travelHid').hide();
var travelVal = 0;
function updateTravelVal(travelVal){
     var  travelVal = travelVal;
     $('#travelHid').val(travelVal);
};
updateTravelVal();


$("#travelVis").bind("change paste keyup", function() {
    var noChars = jQuery(".wie-grand-total").val().replace(/[^0-9.]/g, "");
    var newTot = parseFloat(noChars) + parseFloat($(this).val());
    jQuery(".wie-grand-total").val( '$' + newTot.toFixed(2));


     //added error checking
     var checkError = jQuery(".wie-grand-total").val( '$' + newTot.toFixed(2));

      //if the value that would go in input is NaN then use travelVal
      //since there is no value in .wie-grand-total yet
        if (typeof checkError !== "string") {
          jQuery(".wie-grand-total").val( '$' + travelVal.toFixed(2))
        } else if (typeof checkError === "string") {
         jQuery(".wie-grand-total").val( '$' + newTot.toFixed(2))   
        } 

      /* NEW SINCE COMMENTS */

      updateTravelVal(travelVal);
});