私は、人が注文するために記入するための書式のhtmlファイルを持っています。オブジェクトをグローバル配列に挿入しますか?
私はオブジェクトを格納するグローバル配列を持っています。オブジェクトには、オーダーに追加されたアイテムの名前、価格、数量が含まれます。
<button type="button" onclick="addToOrder('app2-amount', 'House Salad', '6')">+</button>
addToOrder()が呼び出される場所です。
と機能:
var orderArray = [];
function addToOrder(id, nameIn, priceIn){
if (loggedIn == true){
var quantityIn = document.getElementById(id).value;
var totalForThisItem = priceIn*quantityIn;
var menuObject = {
name: nameIn,
price: totalForThisItem,
quantity: quantityIn
};
// Next we must perform a check to see if an object with the same name already exists in the order
// If it does exist, replace it with this new object.
if (orderArray.length == 0){
orderArray.push(menuObject);
}
else{
orderArray.forEach(function (item) {
if (item.name == menuObject.name){
item = menuObject;
}
else{
orderArray.push(menuObject);
}
});
}
console.log("dabs " + orderArray.toString());
}
// If user is not logged in:
else{
console.log("You are not logged in. Please log in to use this feature.");
}
console.log(menuObject);
}
私はmenuObjectを印刷するとき、私は削除し、それがスコープ外になるだろうと思いました。私はそれをグローバル変数に挿入しています。私はそれが私を悩ませていると思います。
私は別のメニュー項目を配列に入れ始めたときに、奇妙なことが起こります。 1つのケースでは、プレスごとに3,6,12,24などを追加しました。面白いけど、私はかなりうんざりです。
ここではどうなりますか?
'私がmenuObjectを印刷すると、スコープの外にある、削除されたと思っていました。あなたの質問以外には、あなたの問題が何であるか明確ではありませんか?説明するためのデータを含むいくつかの例/シナリオを記述します。 – TheUknown
異なるメニュー項目をリストに追加したときの奇妙な動作。 私はJavaでコーディングするのにも慣れているので、関数の範囲外ではないことに気付きませんでした(最後の括弧はクラスの終わりであると考えています)。 ただし、Ifの範囲外です。それは何か意味ですか? – kaleoh
'item = menuObject;'を 'item.name = menuObject.name;に変更してみてください。 item.price = menuObject.price; item.quantity = menuObject.quantity'または配列 – TheUknown