gpt4 book ai didi

javascript - WooCommerce 单个产品页面中基于维度的价格计算

转载 作者:搜寻专家 更新时间:2023-11-01 04:28:18 24 4
gpt4 key购买 nike

根据 "Get selected variation price in jQuery on Woocommerce Variable products " 答案代码,
在我的代码中,我对 WooCommerce 可变产品的价格计算有疑问。

价格会乘以 10 或 1000,具体取决于在下拉菜单中选择的选项,这是不应该发生的,我也不知道为什么会这样。

这是我的代码:

<script>
jQuery(function($) {
var jsonData = <?php echo json_encode($variations_data); ?>,
inputVID = 'input.variation_id';

$('input').change( function(){
if( '' != $(inputVID).val() ) {
var vid = $(inputVID).val(), // VARIATION ID
length = $('#cfwc-title-field').val(), // LENGTH
diameter = $('#diameter').val(), // DIAMETER
ene_enden = $('#id_dropdown_one_end').find('option:selected').attr("value_one_end"),
vprice = ''; // Initilizing

// Loop through variation IDs / Prices pairs
$.each( jsonData, function( index, price ) {
if( index == $(inputVID).val() ) {
vprice = price; // The right variation price
}
});
var rope_price = (length*vprice) + ene_enden;
if (rope_price != 0){
$('.price').html(rope_price+',-');
}

alert('variation Id: '+vid+' || Lengde: '+length+' || Diameter: '+diameter+' || Variantpris: '+vprice+ ' || Rope price: '+rope_price+' || ene_enden = '+ene_enden);

}
});
});
</script>

Picture of product page

出于某种原因,当为“I enden av tauet”选择的选项为“Ingenting”(其值为 0)时,rope_price 会乘以 10 或与 0 连接。当我将所选选项更改为任何其他选项时,rope_price 会乘以 1000 或与 00 连接。我不知道为什么会这样。有什么想法吗?

最佳答案

因为你在连接字符串。 1 + 0"1"+ "0" 不同,您可以在此处查看:

console.log("1 + 0 =", 1 + 0);
console.log('"1" + "0" =', "1" + "0");

当您从 HTML 对象中获取值时,您会收到一个字符串形式的值。如果你想将它用作数字,你必须先转换它。您可以使用 NumberparseFloat(甚至是 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 转换为一个数字,最好将所有预期的数字变量都转换为一个数字。

关于javascript - WooCommerce 单个产品页面中基于维度的价格计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55137989/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com