所描述的问题仅出现在 FF 和 Chrome-Browser 中,其他浏览器如 IE 和 Safari 工作正常。Opera 过去也可以正常工作,但现在不行了,因为我在几分钟前对其进行了测试!
我正在使用带有一些模块的 shop-system xtcModified-Version 1.06,例如 tabbing-module 和 price-updater-module。
这是价格更新程序的代码,我认为问题出在:
var attributePriceUpdater;
(function ($) {
// BEGIN: attributePriceUpdater
attributePriceUpdater = {
// BEGIN: calculate
calculate: function (This) {
var newPrice = 0;
var summe = 0;
var symbolLeft = '';
var symbolRight = '';
var data = This.data('attrdata');
if ($('#optionen' + data.pid + ' select').length) {
var el = ' option:selected'; //wenn selectfeld
} else {
var el = ' input:checked'; //wenn checkbox oder radio
}
$.each($('#optionen' + data.pid + el), function (index, item) {
if (!$(this).parents('#optionen' + data.pid + ' [id^="pmatrix_v"]').attr('style')) {
data = $(this).data('attrdata');
if (data.aprice != 0) {
if (data.prefix == '-') {
summe -= data.aprice;
} else if (data.prefix == '+') {
summe += data.aprice;
} else if (data.prefix == '=') {
summe += data.aprice - data.gprice;
}
}
}
});
newPrice = (summe + data.gprice).toFixed(2).toString().replace(/[.]/, ',');
if (data.cleft) {
symbolLeft = data.cleft + ' ';
}
if (data.cright) {
symbolRight = ' ' + data.cright;
}
// html schreiben
$('#optionen' + data.pid + ' .calculatePrice span.cuPrice').html(data.vpe + ' ' + symbolLeft + newPrice + symbolRight);
$('div.product_price').html(symbolLeft + newPrice + symbolRight);
// html schreiben
},
// END: calculate
// BEGIN: calculateAll
calculateAll: function () {
$.each($('div[id^="optionen"] input[type=radio]:checked, div[id^="optionen"] input[type=checkbox], div[id^="optionen"] option'), function (index, item) {
attributePriceUpdater.calculate($(this));
});
}
// END: calculateAll
};
// END: attributePriceUpdater
// BEGIN: $(document).ready
$(document).ready(function () {
attributePriceUpdater.calculateAll();
$(".javascriptOff").css({
display: "block"
});
$('#tabbed_product_info2 a[href]').on("click", function () {
$('.cuPrice').css('background', 'red');
});
$('div[id^="optionen"] select').click(function () {
attributePriceUpdater.calculate($('option', this));
});
$('div[id^="optionen"] input').click(function () {
attributePriceUpdater.calculate($(this));
});
});
// END: $(document).ready
})(jQuery);
我已经在js-fiddle中提供了我的问题......它“有效”并显示了我遇到的问题,但布局错误。但这并不会损害问题...
通常,不同的维度应排列在选项卡中,在此示例中,它们一个接一个地显示。
现在解决问题:
文章的基本价格为 2,80 欧元。
例如,我选择第一个选项,价格为 4,20 欧元。现在我向下滚动到最后并显示正确的价格。现在我选择最后一个选项“160 x 90 cm”,然后价格就会更新。但不是 72,00 欧元的正确价格,它显示 73,40 欧元。
首先,我选择了价格为 4,20 欧元的选项。这减去 2,80 欧元的基本价格等于 1,40 欧元。这就是显示的价格值,包括新价格 (72,00 EUR + 1,40 EUR = 73,40 EUR)。
当我再次单击相同的选项时,价格正确显示为 72 欧元。
每当我单击另一个选项卡中的另一个价格时,都会发生同样的事情,这在我之前描述的这个示例中看不到)。
另一个例子:首先选择第一个选项(4.20 欧元),然后选择最后一个选项“118.9 x 84.1 厘米”,价格为 60.00 欧元。更新后的价格显示为 61,40 欧元,因此基本价格和第一个选择的选项之间的差异再次...
最奇怪的是这个问题只出现在 Firefox、Opera 和 Chrome-Browser 中!!!我在 IE 和 Safari 中测试了同一个站点和 js-fiddle,它工作正常!
我很感激这方面的任何帮助!提前谢谢!