#javascript #html #css
Вопрос:
В настоящее время я обучаюсь в качестве веб-разработчика и в настоящее время занимаюсь проектом сайта электронной коммерции. Я добился довольно хорошего прогресса, но столкнулся с проблемой-кнопкой «удалить статью». Я попробовал несколько методов, но ни один из них не увенчался успехом, я хотел бы, чтобы при нажатии на мою кнопку статья удалялась из локального хранилища, а также со страницы моей корзины покупок. вот мой код :
if (productLocalStorage === null) {
panierVide.innerHTML = '<p class="text-center">Le panier est vide !</p>';
//sinon
} else {
const table = document.getElementById("cart-tablebody"); //récupétation de l'élément qui contiendra nos articles
productLocalStorage.forEach((element) => {
// pour chaque éléments de mon local Storage
let ligne = document.createElement("tr"); //Création d'une balise 'tr'
ligne.innerHTML =
//ces balises contiendront :
`
<td class="productName">${element.name}</td>
<td>${element.color}</td>
<td><input type="number" id="quantity" min="1" value="${element.quantity}"></td>
<td class="prix">${element.price}</td>
<button id="sup" onclick="deleteProductEventHandler('${element.name}')">Supprimer</button>
`;
table.appendChild(ligne); // ajout de nos balises 'tr' à notre élément 'table'
prixCalculer.push(element.price); //Envoie les prix de nos articles au tableau "prixCalculer"
});
}
Ответ №1:
Это небольшое решение для вашего варианта использования. если вы учитесь, то лучше пересмотреть шаблоны проектирования разработки.
Я настоятельно рекомендую вам это
https://addyosmani.com/resources/essentialjsdesignpatterns/book/
function ShopingCard(node) {
const tbody = node.querySelector('tbody');
function load() {
const rawData = localStorage.getItem('products');
if (rawData) {
JSON.parse(rawData).reduce(createProductRow, tbody);
}
}
function createProductRow(container, row) {
const tr = document.createElement('tr');
const name = document.createElement('td');
const price = document.createElement('td');
const action = document.createElement('td');
const button = document.createElement('button');
name.innerText = row.name;
price.innerText = row.price;
button.innerText = 'Delete';
button.onclick = function () {
tr.remove();
remove(row.name);
}
tr.appendChild(name);
tr.appendChild(price);
tr.appendChild(action);
action.appendChild(button);
container.appendChild(tr);
return container;
}
function remove(productName) {
const rawData = localStorage.getItem('products');
if (!rawData) { return; }
const products = JSON.parse(rawData);
// you may want to filter by id
localStorage.setItem('products', JSON.stringify(products.filter(product => {
return product.name !== productName;
})));
}
function add(data) {
let products = [];
const rawData = localStorage.getItem('products');
if (rawData) {
products = JSON.parse(rawData);
}
createProductRow(tbody, data);
products.push(data);
localStorage.setItem('products', JSON.stringify(products));
}
load();
return {
add
}
}
localStorage.setItem('products', JSON.stringify([{
name: 'Product A',
price: 14
}, {
name: 'Product B',
price: 16
}, {
name: 'Product C',
price: 17
}]));
const card = ShopingCard(document.querySelector('table'));
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>JS Bin</title>
</head>
<body>
<table>
<thead>
<tr>
<td>Name</td>
<td>Price</td>
<td></td>
</tr>
</thead>
<tbody>
</tbody>
</table>
</body>
</html>