读取通过其他JS脚本更改的文本的TextContent

时间:2019-01-03 13:28:56

标签: javascript

我当前正在尝试计算和显示产品数量和变化时的自动价格。一切都很好,尽管我无法读取变化的价格(取决于变化)。我需要使用该值来计算其他内容。 价格通过第三方脚本自动更新,因此我的想法是读取值,然后将其重新用于我的目的。不幸的是,我读取的值永远不是更新值,而是先前的价格。我希望我足够清楚。这里是一个例子: enter image description here

每次更改颜色时,我都会通过ajax显示不同的价格,如何直接访问更改的价格值并使用它?

下面是一些代码:

var amount = document.querySelector('.single_variation_wrap .woocommerce- 
variation-price .woocommerce-Price-amount')
var price = amount.textContent.split("€")
var changeComma = price[0].replace(/,/g, ".");
var convertedPrice = parseFloat(changeComma)
var totalPrice = convertedPrice;

var el = document.querySelector('[name="quantity"]');
var flavor = document.getElementById('flavors');
var basePackSize  = 6;


function changeVariation (){
 if(multiple && multiple.checked === true){
 price = totalPrice * 0.9
 CalculateQuantity(basePackSize,price)
 }else{
  CalculateQuantity(basePackSize,totalPrice)
 }}


function CalculateQuantity(basePackSize, price) {
 var total = price * el.value
};

el.addEventListener("change", function(){
  changeVariation()
})
flavor.addEventListener('change', function(e) { 
 changeVariation()

})

1 个答案:

答案 0 :(得分:0)

我过去有类似的作品。我猜您将Wordpress与Woocommerce插件和另一个3rd party插件一起使用。更简单的解决方案是使用setTimeout()来显着延迟。就像有人在评论中建议的那样。这是因为您的第三方插件在处理过程中有一些任务,而脚本在完成第三方任务之前获取了值。甚至感觉像是幸运的猜测。在某些情况下,第3方任务的处理时间可能会比您的网络处于活动状态时的超时时间长。

但是,在上一个项目中,我使用了另一种方法。我可以建议您的另一件事是,找到他们的脚本来执行该过程,将其复制到您的主题,然后对其进行修改以使其与您的需求相匹配。同时,您应该从Wordpress挂钩中将其取出,然后使用修改后的脚本“重新挂钩”。我为Woocommerce使用了名为“ Variation Master”的插件。因此,我的“重新挂钩”脚本如下所示:

remove_action("wp_ajax_ced_vm_get_variation_gallery_for_single", 'ced_vm_get_variation_gallery_for_single');
remove_action("wp_ajax_nopriv_ced_vm_get_variation_gallery_for_single", 'ced_vm_get_variation_gallery_for_single');

add_action("wp_ajax_ced_vm_get_variation_gallery_for_single", 'dx_vm_get_variation_gallery_for_single');
add_action("wp_ajax_nopriv_ced_vm_get_variation_gallery_for_single", 'dx_vm_get_variation_gallery_for_single');

我对Javascript的修改更多地用于图库任务,而不是像您一样进行价格计算。因此,您需要管理的钩子应该有所不同。