1

运行最新版本的 OpenCart,在 product.tpl 底部的 javascript 中有如下代码行:

$('#cart-total').html(json['total']);

此行无需重新加载页面即可更新购物车总数,因此$('#cart-total').html(json['total']);输出<span id="cart-total">6 item(s) - $693.50</span>

但是,我自定义了 cart.tpl 模块和 cart.php 语言文件,以稍微不同地显示购物车输出,使其输出如下:

<span id="cart-total">
     <div class="mini-cart-items">6 Items</div>
     <div class="mini-cart-total">Your total is $693.50</div>
</span>

因此,由于某种原因,当$('#cart-total').html(json['total']);更新购物车总数时,它会删除我在其中的两个 div,只显示没有我设置的格式的信息。

是否可以更新 javascript 使其不删除信息?

如果上下文需要,我可以提供更多代码。

EDTI:这是整个 javascript 部分,$('#cart-total').html(json['total']);位于:

if (json['success']) {
                $('#notification').html('<div class="success" style="display: none;">' + json['success'] + '<img src="catalog/view/theme/default/image/close.png" alt="" class="close" /></div>');

                $('.success').fadeIn('slow');

                $('#cart-total').html(json['total']);

                $('html, body').animate({ scrollTop: 0 }, 'slow'); 
            }

当前代码,编辑如下:

        if (json['success']) {
            $('#notification').html('<div class="success" style="display: none;">' + json['success'] + '<img src="catalog/view/theme/default/image/close.png" alt="" class="close" /></div>');

            $('.success').fadeIn('slow');

            console.log(json['total']);
            var output = $(json['total']).text().split('-');
            $('.mini-cart-items').html(output[0]);
            $('.mini-cart-total').html('Your total is ' + output[1]);

            $('html, body').animate({ scrollTop: 0 }, 'slow'); 
        }       
4

4 回答 4

2

如果你json['total']只包含数字量,那么你可以试试这个:

$('#cart-total .mini-cart-total').empty().html('Your total is $' + json['total']);

根据您的编辑:

var output = $(json['total']).text().split('-');

$('.mini-cart-items').html(output[0]);
$('.mini-cart-total').html('Your total is ' + output[1]);

演示

于 2012-05-07T10:32:23.490 回答
2

我也遇到了麻烦,我找到了解决问题的方法。

如何工作 json['total'] 我在catalog/controller/checkout/cart.php

$json['total'] = sprintf($this->language->get('text_items') .......

但它不是那么重要,'text_items' 放在两个地方

catalog/language/russian/module/cart.php

catalog/language/russian/checkout/cart.php

很有意思,先用module文件,用jsoncheckout文件

这是我的'text_items',我把它放在两个语言文件中

// Text
$_['text_items'] = 'In cart: <div class="header-product">%s product</div> summ %s';
于 2012-08-10T21:53:21.630 回答
0

以上工作,你总是可以给你的 div 一个 id

<div id="mini-cart-total" class="mini-cart-total">Your total is $574.00</div>

在你的脚本中:

$('#mini-cart-total').html(json['total']);

在一天结束时, $('#id').html(str) 将 id 中的所有 html 替换为您传入的内容。

于 2012-05-07T10:37:14.313 回答
0

我已经通过这个解决了

setTimeout(function(){
  $('#cart-total').html('Your total is $' + json['total']); 
}, 100);

只需添加延迟

于 2018-06-14T19:39:51.753 回答