Javascript jQuery:编号未更新,正在更改为0
我正在尝试使用jQuery计算项目的税费。我使用的CRM有一种称为标记的东西,它采用{tag_something}的形式来动态读取网页上的信息。我想使用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(文档).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 {
}
}