Javascript jQuery:编号未更新,正在更改为0

Javascript jQuery:编号未更新,正在更改为0,javascript,jquery,business-catalyst,Javascript,Jquery,Business Catalyst,我正在尝试使用jQuery计算项目的税费。我使用的CRM有一种称为标记的东西,它采用{tag_something}的形式来动态读取网页上的信息。我想使用jQuery更新产品的价格。(稍后将针对州特定税收实施)。我的代码正在更改原始价格,但它没有将其更改为需要的价格,而是在页面上默认为“0”。如有任何意见或建议,将不胜感激。我为此设置的产品是: jQuery(文档).ready(函数(){ initUpdateTax(); } ); 函数initUpdateTax(){ var应纳税=“{

我正在尝试使用jQuery计算项目的税费。我使用的CRM有一种称为标记的东西,它采用{tag_something}的形式来动态读取网页上的信息。我想使用jQuery更新产品的价格。(稍后将针对州特定税收实施)。我的代码正在更改原始价格,但它没有将其更改为需要的价格,而是在页面上默认为“0”。如有任何意见或建议,将不胜感激。我为此设置的产品是:


jQuery(文档).ready(函数(){
initUpdateTax();
}   
);
函数initUpdateTax(){
var应纳税=“{tag_taxcode}”;
var saleprice='{tag_saleprice}';
如果(应税=“附件”){
$(“#应税”).text(函数(saleprice){
返回数学舍入(parseInt(saleprice+(saleprice*0.06875));
});
}
}

在文本框的
change
事件中再次调用该方法

$('.productTextInput').on('change', function() {
     initUpdateTax();
});
您似乎仅在页面第一次加载时才调用该方法。每当输入框更改时,您需要再次调用该方法

更好

jQuery(document).ready(function () {
    // Change event
    $('.productTextInput').on('change', initUpdateTax)
        .change(); // Trigger the change on DOM ready
});

function initUpdateTax() {
    var saleprice = '{tag_saleprice}';
    // Find the corresponding element wherein the 
    // total price has to be shown
    var $total = $(this).closest('li')
        .prevAll('.price').first().find('strong');

    $total.text(function (saleprice) {
        return Math.round(parseInt(saleprice + (saleprice * 0.06875)));
    });

}

在您发布的链接之后,正在执行的代码是:

function initUpdateTax() {
    var taxable = 'Accessories';
    var saleprice = '$95.99';
    if  (taxable == "Accessories"){
        $('#taxable').text(function(saleprice) {
            return Math.round(parseInt(saleprice + (saleprice * 0.06875));  
        });
    }
    else {
    }
}
saleprice
的值不是有效数字,因此乘法
saleprice*0.06875
会导致
NaN
。在
返回表达式的行中还缺少括号

此外,使用
parseInt
Math.round
操作没有多大意义,因为第一个操作的返回值是一个整数,当四舍五入时它本身就是整数。对该值征税的应用可以用以下更简洁(更清晰)的方式表示
saleprice*1.06875

这是函数的一个版本,可以实现您所期望的功能:

function initUpdateTax() {
    var taxable = '{tag_taxcode}';
    if  (taxable == "Accessories"){
       var saleprice = $('#taxable').text();
       var price = parseFloat(saleprice.replace('$', '')) * 1.06875;
       $('#taxable').text('$' + price.toFixed(2));
    }
    else {
    }
}

现在它根本没有改变数字。我知道它的目标是正确的元素。不确定为什么数字没有正确更新。请发布相关的HTML代码。
function initUpdateTax() {
    var taxable = '{tag_taxcode}';
    if  (taxable == "Accessories"){
       var saleprice = $('#taxable').text();
       var price = parseFloat(saleprice.replace('$', '')) * 1.06875;
       $('#taxable').text('$' + price.toFixed(2));
    }
    else {
    }
}