Javascript 向数组中添加项并跟踪jQuery中的变量
基本上,我需要跟踪POS系统中的变量。当您单击顶部的项目时,它会将其添加到数组中的列表中(从数据库中提取),我需要将“计数”设置为1(即添加了1个项目),当您再次单击添加项目时,它会检查列表中的项目数组,如果存在,则会将一个项目添加到“计数”中。我无法做到这一点,它只是将一个项目添加到数组中,然后再也不做任何事情。任何协助都将不胜感激Javascript 向数组中添加项并跟踪jQuery中的变量,javascript,jquery,html,mysql,arrays,Javascript,Jquery,Html,Mysql,Arrays,基本上,我需要跟踪POS系统中的变量。当您单击顶部的项目时,它会将其添加到数组中的列表中(从数据库中提取),我需要将“计数”设置为1(即添加了1个项目),当您再次单击添加项目时,它会检查列表中的项目数组,如果存在,则会将一个项目添加到“计数”中。我无法做到这一点,它只是将一个项目添加到数组中,然后再也不做任何事情。任何协助都将不胜感激 <!doctype html> <html lang="en"> <? // Connect database.
<!doctype html>
<html lang="en">
<?
// Connect database.
include("settings.php");
mysql_connect($db_host, $db_user, $db_pass);
mysql_select_db($db_name);
?>
<head>
<meta charset="UTF-8"/>
<title>POS</title>
<link rel="stylesheet" href="dist/css/bootstrap.css">
</head>
<body>
<h1>Company</h1>
<h4>User</h4>
<div class="row">
<div class="col-sm-12 col-md-8">
<div class="pagination btn-group" id="items">
<? $sql = "SELECT itemname FROM items ORDER BY itemname ASC";
$result = mysql_query($sql);
while ($row = mysql_fetch_array($result))
{
$datacost = $row['price'];
$id = $row['id'];
$itemname = $row['itemname'];
echo "<button class='btn btn-medium highlight-color-0' id='$id' item-name='$itemname' data-cost='$datacost'><div class='btn-image gears'></div><span class='btn-text'>$itemname</span>";
}
echo "</button>"; ?>
</div>
</div>
<div class="col-sm-6 col-md-4">
<h2>Totals</h2>
<ul id="items">
</ul>
<h3 id="price">£0</h3>
<button class="btn btn-large background-color-1">checkout</button>
<button class="btn btn-large background-color-2">add to tab</button>
</div>
</div>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script>
// Set up an object for the order
order =
{
ids: [],
itemNums: [],
total: 0,
// Initialise things
init: function()
{
order.itemNums[0] = 0;
// Do something when someone clicks a button
$('#items button').click(function()
{
id = $(this).attr('id');
name = $(this).attr('item-name');
price = $(this).attr('data-cost');
// Add item to order
if ((order.itemNums[id] < 1) || (order.itemNums[id] == null))
{
order.itemNums[id] = 1;
order.addItemToOrder(id, name, price);
}
else
{
order.itemNums[id]++;
}
});
},
addItemToOrder: function(id, name, price)
{
$("ul#items").append("<div class='tag-remove'>" + name + "</div>");
$("ul#items").append("<div class='tag tag-rounded tag-padded background-color-1 light-text'>" + order.itemNums[id] + "</div><br>");
order.updateTotal(price);
},
updateTotal: function(price)
{
order.total += price * order.itemNums[id];
$('h3#price').html("£" + parseFloat(order.total, 10).toFixed(2));
}
};
$(function()
{
order.init();
});
</script>
</body>
</html>
销售时点情报系统
公司
使用者
看起来您希望在order对象之前添加一个“tally”变量,然后在click函数中增加它?它需要是数组吗?因为会有不同的项目有不同的计分啊,也许我误解了,你那么你想计分每个项目有多少?例如2个桔子,3个苹果,5个香蕉等等?是的,坚持水果的例子,假设顶部有按钮来选择ie苹果桔子香蕉菠萝,当你点击苹果时,它会将其添加到列表中。然后,当再次单击苹果时,它会将其更改为x2,然后是x3等。然后,如果单击香蕉,它会将其添加到带有x1的苹果下面。有没有一种简单的方法可以做到这一点?order对象正在更新,但是只有在元素尚未添加到order时,才可以更改HTML。因此,在order.itemNums[id]++
之后,您需要更新HTML,或者编写一个函数来呈现整个订单,并在发生任何更改后调用它。