Форум программистов, компьютерный форум, киберфорум
JavaScript для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/8: Рейтинг темы: голосов - 8, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 06.10.2020
Сообщений: 7

Как сделать так что б элементы которые есть в корзине не попадали туда повторно?

16.11.2020, 15:07. Показов 1649. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день. Я на данный момент далеко не все понимаю в JS, недавно начал учиться . Сделал корзину, по клику элементы вроде как туда попадают но не понимаю почему прилетел undefined. И подскажите пожалуйста, как сделать так что б элементы которые есть в корзине не попадали туда повторно и настроить кнопку очистки корзины. Спасибо большое
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<!DOCTYPE html>
<html lang="en">
 
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link rel="stylesheet" href="./style.css">
</head>
 
<body>
    <div class="root"></div>
    Cart
    <div class="cart"></div>
    <button class="clear-storage">Remove key</button>
    <script src="main.js"></script>
</body>
 
</html>
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
const goods = [
    {
        name: "car 1",
        price: 100
    },
    {
        name: "car 2",
        price: 200
    },
    {
        name: "car 3",
        price: 300
    }
]
 
const goodsInStorage = JSON.parse(localStorage.getItem("goods"));
const goodsInCart = goodsInStorage ? goodsInStorage : [];
 
const store = document.querySelector(".root");
const cart = document.querySelector(".cart");
 
const addItemFromStorage = () => {
    goodsInCart.forEach((item) => {
        const goodInCart = document.createElement("div")
        goodInCart.innerText = `Марка ${item.name}, цена ${item.price}`;
        cart.append(goodInCart)
    })
}
 
 
const goodClicklHandler = (item) => {
    item.addEventListener("click", function () {
        cart.innerHTML = ""
        const itemIndex = this.getAttribute("data-good-id")
        goodsInCart.push(goods[itemIndex])
 
        localStorage.setItem("goods", JSON.stringify(goodsInCart))
        addItemFromStorage()
    })
}
 
 
goods.forEach((good, index) => {
    const item = document.createElement("div")
    item.dataset.goodId = index
    item.innerText = `Марка ${item.name}, цена${item.price}`
    store.append(item)
 
    goodClicklHandler(item)
})
 
 
addItemFromStorage()
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
16.11.2020, 15:07
Ответы с готовыми решениями:

Как сделать так что бы пули летели туда куда смотрит корабль
Здравствуйте, не как не могу понять как сделать так, чтобы корабль стрелял туда коуда я смотрю Вроде бы все правильно, но он стреляет...

Как сделать так, чтобы по нажатию кнопки цифры, введённые в textBox ы, попадали в программу?
По умолчанию в моих textBox'ax стоит цифра &quot;2&quot; (в некоторых &quot;5&quot; или &quot;3&quot;, не суть важно). Цифры textBox oв попадают в программу и на их...

Отчёт СКД. Как сделать так, чтобы в него попадали только данные за оба периода
Приветствую. Не подскажите, как сделать в отчёте так, чтобы в него попадали только данные за оба периода? Т.е. чтобы здесь выводилось...

1
Эксперт JS
 Аватар для DrType
6553 / 3624 / 1075
Регистрация: 07.09.2019
Сообщений: 5,877
Записей в блоге: 1
16.11.2020, 16:06
Лучший ответ Сообщение было отмечено Senkevich00 как решение

Решение

Здравствуйте.
Цитата Сообщение от Senkevich00 Посмотреть сообщение
но не понимаю почему прилетел undefined.
По небрежности:
JavaScript
1
2
3
4
5
6
7
8
goods.forEach((good, index) => {
  const item = document.createElement("div");
  item.dataset.goodId = index;
  item.innerText = `Марка ${good.name}, цена${good.price}`;
  store.append(item);
 
  goodClicklHandler(item);
});
Цитата Сообщение от Senkevich00 Посмотреть сообщение
И подскажите пожалуйста, как сделать так что б элементы которые есть в корзине не попадали туда повторно
Хорошо бы присвоить каждому товару id, иначе, видимо, придётся проверять по имени:
JavaScript
1
2
3
if (!goodsInCart.some((good) => good.name == goods[itemIndex].name)) {
   goodsInCart.push(goods[itemIndex]);
 }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.11.2020, 16:06
Помогаю со студенческими работами здесь

Найти элементы, которые есть как в первом массиве так и во втором, и вывести их в третий массив
Всем доброго времени суток у меня такой вопрос как решить такую задачку: у нас есть массив arr1 и arr2 нужно найти элементы которые есть...

Найти элементы, которые есть как в первом массиве так и во втором, и вывести их в третий массив
Всем доброго времени суток у меня такой вопрос как решить такую задачку: у нас есть массив arr1 и arr2 нужно найти элементы которые есть...

У меня есть Shape1 Shape2 Shape3 на форме .Есть Combobox .Как сделать так ,что бы при выборе Shape 1 красилась Shape1
Только в моем проекте там не выйдет банально сделать команду которая перекрасит Shape по типу(Shape1.Brush.Color)можно ли как то передать...

Как сделать так, что бы в результате не дублировались одинаковые элементы?
#include &lt;iostream&gt; #include &lt;string&gt; #include &lt;set&gt; using namespace std; int main() { srand(time(NULL)); int a; ...

Массив: как сделать так, чтобы рандомно выбирались только те элементы массива, которые не были выбраны раньше?
В общем, из массива рандомно выбирается элемент, как сделать так, чтобы выбирались только те, которые не были выбраны раньше? Можно это...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru