gpt4 book ai didi

xml - jQuery 循环?克隆?简单地说为什么?

转载 作者:行者123 更新时间:2023-12-01 03:46:03 25 4
gpt4 key购买 nike

新版本(不是新问题...)

所以,我遇到了 .click();.html(); 的“循环”问题。

检索 XML 数据:确定

function afficher(NomPizz, Prix1, Prix2, Prix3) {//HERE IS MY CODE//});

将它们打印到屏幕:确定

$('#pricecontainer').show(); //Display my container and put values in with .html();
$('#prix1').html('SOLO 1P<p id="p1" style="line-height:10px;">' + Prix1.toFixed(2) + '</p>');
$('#prix2').html('MAXI 2P<p id="p2" style="line-height:10px;">' + Prix2.toFixed(2) + '</p>');
$('#prix3').html('SUPER 4P<p id="p3" style="line-height:10px;">' + Prix3.toFixed(2) + '</p>');​

点击时将值附加到其他 div:确定

一切都有效...一次!当我点击更多次时,值会“克隆”本身。

因此,如果我单击一次:我添加了 1 个项目。

我得到:1 OK

点击两次。

我得到了3,前一个和另外两个!

点击三次。

我得到了6,前三个和更多!

等等...等等...

我把这段代码放入我的function afficher();我找到的唯一一个解决方案......糟糕的一个!

$("clickedItemId").click(function() {
var Figure = $(this).find('p').html();
totalArea.value += '+' + Figure;
var Screen = totalArea.value.replace(/'/g, ' ');
var result = eval(Screen);
totalArea.value = result;
var $newItem = "<span style='float:left'>1 " + NomPizz.toUpperCase() + "</span><span style='float:right'>" + Figure + "</span><br/>";
$('<div><div>').html($newItem).appendTo(RecapTick);
Display2.value = "TOTAL (EUR): " + totalArea.value;
$('#pricecontainer').hide();
});​

因此,我的 function afficher(); 的整个代码将是:

function afficher(NomPizz, Prix1, Prix2, Prix3) {
var totalArea = document.getElementById('totalArea');
var Display2 = document.getElementById('Display2');
var RecapTick = document.getElementById('MidTiTx');
$('#pricecontainer').show();
$('#prix1').html('SOLO 1P<p id="p1" style="line-height:10px;">' + Prix1.toFixed(2) + '</p>');
$('#prix2').html('MAXI 2P<p id="p2" style="line-height:10px;">' + Prix2.toFixed(2) + '</p>');
$('#prix3').html('SUPER 4P<p id="p3" style="line-height:10px;">' + Prix3.toFixed(2) + '</p>');
//BUG HERRERRERERERERER
$("clickedItemId").click(function() {
var Figure = $(this).find('p').html();
totalArea.value += '+' + Figure;
var Screen = totalArea.value.replace(/'/g, ' ');
var result = eval(Screen);
totalArea.value = result;
var $newItem = "<span style='float:left'>1 " + NomPizz.toUpperCase() + "</span><span style='float:right'>" + Figure + "</span><br/>";
$('<div><div>').html($newItem).appendTo(RecapTick);
Display2.value = "TOTAL (EUR): " + totalArea.value;
$('#pricecontainer').hide();
});
};​
<小时/><小时/>

PS 我住在这里旧版本的帖子(与其他代码相同的 pb):

So, my prolem is the following:

[LIVE DEMO][1]

EDIT: [DOWNLOAD SOURCE][2]

It's a simple cart that retrieves the list of products from a xml file. This part works !

When they are clicked, the products added to the list below, but when you click repeatedly on the same, the total of these should be added ... This is where I get stuck !

I tried to change the line 62:

tot = parseInt(jQuery(this).find('.prow').html());

To:

tot = parseInt(jQuery(this).find('.prow').html()+1);

But not working... I think the problem is that I am using. .click(); with onclick="" method ??? Or maybe because of bad "var" use ?

Please someone enlighten me !

Here is my jsCode:

function calculate(){
var tot = 0;
jQuery(".totprice").each(function(e,b){
tot += parseInt(jQuery(this).text());
});
return jQuery("#amt").html("$"+tot);
}

function showprod(){
jQuery(".prod").each(function(e){
jQuery(this).delay(500*e).fadeIn('fast');
});
}

function clearcart(){
jQuery("#clear").live('click',function(){
jQuery(".tetew").fadeIn(4000,function(){
jQuery(this).remove();
calculate();
});
});
}

function delete_ajax(){
jQuery(".del").live('click',function(e){
var a = jQuery(this);
var p = a.parent().parent().parent().parent().parent();
if(p){
p.fadeOut('slow',function(){
jQuery(this).remove();
calculate();
});
}
});
}

function addtocart(){
jQuery(".addtocart").click(function(e){
var getprod = jQuery(this).attr("prodid");
var getval = jQuery(this).attr("prodval");

jQuery("#msg").fadeIn('slow');

jQuery.ajax({
type:'GET',
url:'db.xml',
dataType:'xml',
success: function(xml){
jQuery(xml).find('databases').each(function(){
jQuery(this).find('prod').each(function(e){
var db_id = jQuery(this).attr('id');

jQuery("#msg").fadeOut('slow');
if(getprod == db_id){
var cookies = 1;
jQuery(".tetew").each(function(){
var _this = jQuery(this);
var _store = _this.find('.pstore');
var ident = _this.find('.pqty');

if(getprod == ident.text()){
var tot = parseInt(jQuery(this).find('.prow').html()); //Put a +1 here won't work...
jQuery(this).find('.prow').html(tot);
var restot = parseInt(jQuery(this).find('.prow').text()) * parseInt(jQuery(this).find('.price').text());
jQuery(this).find('.totprice').html(restot);
cookies = 0;
return false;
}else{
cookies = 1;
}
});

if(cookies == 1){

var results = "<div class='tetew'>";
results +="<table>";
results +="<tr>";
results +="<td class='pqty' style='display:none' valign='top'>" + jQuery(this).attr("id") + "</td>";
results +="<td class='img' valign='top'><img src='" + jQuery(this).attr('img') + "' width='40' height='40' /></td>";
results +="<td class='pstore' valign='top'>" + jQuery(this).text() + "</td>";
results +="<td class='prow' valign='top'>1</td>";
results +="<td class='price' valign='top'>" + jQuery(this).attr('price') + "</td>";
results +="<td class='totprice' valign='top'>" + jQuery(this).attr('price') + "</td>";
results +="<td valign='top'><a href='javascript:void(0)' class='del'>Delete</a></td>";
results +="</tr>";
results +="</table>";
results +="</div>";
}

jQuery(".tetew:eq("+e+")").hide().fadeIn('fast');
jQuery("#addto").append(results);
calculate();
return false;
}
});

});
}
});

});
}

function loadXMLdb() {
$.ajax({
type: "GET",
url: "db.xml",
dataType: "xml",
success: function(xml) {
$(xml).find('prod').each(function() {
var _Nom = jQuery(this).text();
var Col1 = jQuery(this).attr('id');
var Col2 = jQuery(this).attr('price');
var Col3 = $(this).find('grand').text();
$('<div class="prod" style="display:block;" onclick="addtocart();"></div>').html(_Nom + '<br /><img

src="images/pizza.png">
Ajouter').appendTo(".vprod");

                });
}
});

}

jQuery(document).ready(function(){
showprod();
clearcart();
addtocart();
delete_ajax();
loadXMLdb();
});

[1]: http://bzez.0fees.net/examples/jCart/ [2]: http://bzez.0fees.net/examples/jCart/jCart.zip

最佳答案

您的购物车似乎只会反射(reflect) xml 文件中的内容,因此您只能在其中包含 1 个商品。我建议您以不同的方式看待您的问题。

尝试这样的事情:

var cart = [];

var items = [
{id:1, price:100, name:"Catch Arena"},
{id:2, price:400, name:"Pepperonni"},
{id:3, price:1400, name:"Fruits de Mer"},
{id:4, price:1400, name:"Chickenita"},
];

然后,将商品添加到购物车:

<a href="#" onclick="addToCart(0);">Add Catch Arena</a>
<a href="#" onclick="addToCart(1);">Add Pepperonni</a>
<a href="#" onclick="addToCart(2);">Add Fruits de Mer</a>
<a href="#" onclick="addToCart(3);">Add Chickenita</a>

我这里的 addToCart 使用数组的索引(从零开始):

window.addToCart = function(idx) {
cart.push(items[idx]);
displayCart();
};

现在您已经有了一个购物车,您需要显示它:

<div id="ShoppingCart">Your cart is empty</div>
<div id="total"></div>
...
window.displayCart = function() {
var cartHtml = [];
var cartTotal = 0;
for (i=0; i<cart.length; i++) {
cartHtml.push("<div>" + cart[i].name + ", " + cart[i].price + "</div>");
cartTotal += cart[i].price;
}
$('#total').html(cartTotal);
$('#ShoppingCart').html(cartHtml.join(''));
};

我已经在 jsfiddle 中运行了这个:http://jsfiddle.net/R4rzC/

我也不会说这是最佳实践,因为购物车可能应该与后端数据库等同步,但我敢说您使用 js 实现购物车是有原因的,可能是出于技术原因!

关于xml - jQuery 循环?克隆?简单地说为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13504315/

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