我正在研究一個小的JavaScript應用程序,用戶可以單擊頁面上的按鈕並將它傳遞給他們的籃子。我這樣做的問題是我不確定在同一個函數中處理多個按鈕。我不想爲每個按鈕寫出不同的功能。Pure JS | Basket |關閉
我試圖做到這一點OOP和有這個至今:
var shop = {};
shop.items = [];
shop.Item = function(item, description, price) {
this.item = item;
this.description = description;
this.price = price;
};
shop.print = function() {
var itemCon = document.getElementById('items'),
html = "";
for(var i = 0; i < this.items.length; i++) {
html += '<div id="item">';
for(prop in this.items[i]) {
html += '<p><span class="title">' + prop + '</span>: ' + this.items[i][prop] + '</p>';
};
html += '<button id="' + this.items[i].item + '">Add to Basket</button>'
html += '</div>';
};
itemCon.innerHTML += html;
};
shop.items[shop.items.length] = new shop.Item("Coat", "Warm", "20");
shop.items[shop.items.length] = new shop.Item("Coat", "Warm", "20");
shop.items[shop.items.length] = new shop.Item("Coat", "Warm", "20");
shop.items[shop.items.length] = new shop.Item("Coat", "Warm", "20");
var basket = {};
basket.items = [];
basket.Item = function(item, description, price) {
this.item = item;
this.description = description;
this.price = price;
};
basket.add = function(data) {
this.items[items.length] = new Item(data.item, data.description, data.price);
};
basket.costCalculate = function() {
var cost = 0,
html = "Total: " + cost;
for(var i = 0; i < this.items.length; i++) {
cost += items[i].price;
};
return html;
};
basket.print = function() {
var output;
for(var i = 0; i < this.items.length; i++) {
for(prop in this.items[i]) {
console.log(prop + ": " + this.items[i][prop]);
};
};
};
function init() {
shop.print()
};
window.onload = init;
我將如何確定已被點擊,以運行basket.add(數據)是什麼項目。我怎樣才能將每個項目的數據傳遞給該函數。
另外,如何實施關閉?我知道它是可以訪問外部函數變量的內部函數,到目前爲止我正在使用閉包來處理這些內容嗎?
感謝您的快速回復。我理解你所說的這一切非常有用。我不明白的唯一部分是:$(「。add-product-button」)。click(function(){var_id = $(this).attr('data-id'); var item = shop。 items [id]; basket.add(item); });.是不是這個JQuery? – hudsond7 2014-11-24 11:14:25
你說得對。我沒有讀到你要求純JS的問題的一部分。更新我的答案,包括兩個,因爲一個只讀比其他更好:) – Vidur 2014-11-24 11:26:33
非常感謝您的幫助,您已經大大幫助我進一步瞭解JavaScript中的編碼練習。 – hudsond7 2014-11-24 11:27:16