基于“在Woocommerce变量产品上获取jQuery中的选定变体价格”答案代码,在我的代码中,我对WooCommerce变量产品的价格计算存在问题。
……
因为你是连接字符串。不一样 1 + 0 比 "1" + "0" ,你可以在这里查看:
1 + 0
"1" + "0"
console.log("1 + 0 =", 1 + 0); console.log('"1" + "0" =', "1" + "0");
从HTML对象获取值时,将其作为字符串接收。如果要将其用作数字,则必须先将其转换。你可以使用其中之一 Number 要么 parseFloat (甚至 parseInt ,但会删除小数)。
Number
parseFloat
parseInt
var oneNumber = 1; var oneString = "1"; var oneConverted = Number(oneString); console.log("typeof oneNumber:", typeof oneNumber); console.log("typeof oneString:", typeof oneString); console.log("typeof oneConverted:", typeof oneConverted); console.log("oneNumber + oneNumber =", oneNumber + oneNumber); console.log('oneString + oneString =', oneString + oneString); console.log('oneConverted + oneConverted =', oneConverted + oneConverted);
你遇到的确切问题是你的问题 ene_enden 变量是行中的字符串 var rope_price = (length*vprice) + ene_enden; 。当你将两个字符串相乘时,它们会自动转换为一个数字(你的 (length*vprice) ),但是当你将这个数字连接到另一个字符串时,它们会自动转换为字符串(你的 + ene_enden ),所以你必须先转换 ene_enden 一个数字,更好地将所有预期的数字变量转换为数字。
ene_enden
var rope_price = (length*vprice) + ene_enden;
(length*vprice)
+ ene_enden