上述问题仅出现在FF和Chrome浏览器中,其他浏览器(如IE和Safari)正常工作。 Opera也曾经工作得很好,但它现在不再适用了,正如我几分钟前测试过的那样!FF,Opera和Chrome中的价格更新程序无法正常工作
我正在使用商店系统xtcModified-Version 1.06以及一些模块,如标签模块和价格更新模块。
下面是对价格更新,在这里我想这个问题是在代码:
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-拨弄 ...它“作品”,并显示我得到的问题,但布局是错误的。但是,这并不损害问题...
一般情况下,不同的尺寸应安排在标签,在这个例子中,他们将显示一个后对方。
现在的问题:
该文章的基价是2,80欧元。
我选择例如第一个选项,价格为4,20欧元。现在我滚动到最后,并显示正确的价格。现在我选择最后一个选项“160 x 90厘米”,并且价格得到更新。但不是72,00欧元的正确价格,它显示73,40欧元。
首先我选择了价格4,20欧元的选项。这减去2,80欧元的底价等于1,40欧元。这是价格显示的价格,包括新价格(72,00欧元+ 1,40欧元= 73,40欧元)。
当我第二次点击相同的选项时,价格正确显示在72 EUR。
每当我点击另一个选项卡中的另一个价格时,就会发生同样的事情,这在以前描述的示例中无法看到)。
另一个例子:首先选择第一个选项(4,20欧元),然后是第四个最后选项“118.9 x 84.1厘米”,价格为60,00欧元。更新的价格与61,40欧元一起显示,所以再次选择基准价格和第一个选项...
绝对奇怪的是,这个问题只发生在Firefox,Opera和Chrome-浏览器!我在IE和Safari上测试了同一个站点和js-fiddle,它工作的很好!
我很欣赏这方面的任何帮助! Thx提前!
我只是想你的jsfiddle在Chrome V28在Windows 7上,并显示每一次正确的价格。 – RobH
Hi RobH! Thx看这个......对不起,我想我换了Opera和Chrome ......所以它在FF和Opera中不起作用,但是它在IE7,Safari和Chrome上运行在Win7上!对不起! –
我在.each()中添加了一个'console.log()'语句,它计算summe并发现输出错误时,.each()处理了两个值为2,8的元素。我还注意到,某些单选按钮具有不同的名称=属性,这允许选择多个单选按钮。希望这可以帮助您追踪问题的根源并找到解决方案。 – dsh