Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Изменения в корзине товаров (https://javascript.ru/forum/dom-window/61530-izmeneniya-v-korzine-tovarov.html)

r1sus 22.02.2016 16:02

Изменения в корзине товаров
 
Добрый день!
Я только начала учить js, поэтому прошу не судить строго за сам вопрос.
У меня есть страница(корзина) на которой я уже сверстала таблицу с выбранными товарами(этих товаров нет, просто муляж корзины) . так вот, я хочу сначала понять как мне обратится к конкретной строке таблицы. у меня есть знак удалить напротив каждой строки таблицы, я хотела сначала попробовать хотя бы скрыть строчку таблицы . Если не сложно, объясните как работать с этими данными таблицы? нужно все данные заносить в обьект (ассоц.массив) ? first - это class tr, в котором характеристики товаров (td)
document.querySelector(".delete_item").addEventListener("click", function() {
    document.querySelector(".first").style.display="none";

})

laimas 23.02.2016 08:21

Представьте, что у вас есть реальный выбор - слева от вас магазин, справа рынок. Вам необходимо купить товар "Х". Вы заходите в магазин, видите товар на прилавке и занимаете очередь. Мысленно вы уже купили товар, но в аккурат когда до вас дошла очередь, последний товар с прилавка был продан впереди стоящему.

Вы отправляетесь на рынок и видите у одного из торгующих список товаров среди которых есть и "Х". Товара самого оказывается нет, но не проблема, продавец предлагает его все равно заказать и гарантирует, что завтра для вас он обязательно будет.

В обоих случаях торговля, но в каждом из них есть своя специфика. Если в первом случае вы можете видеть товар, но это еще не означает, что в в любое время "Ч" он вам будет доступен. Плох тот магазин (и не важно реальный ли или виртуальный), который не ведет учета товаров и при этом оставляет в неведении покупателя. Еще хуже, если виртуальный магазин предоставляет покупателю корзину оторванную от склада.

Поэтому, прежде чем тренироваться с корзиной, необходимо определиться с торговой политикой магазина, а уж затем, зная каков механизм набора товаров в корзину будет, можно определять код обслуживающий ее.

r1sus 23.02.2016 18:17

Цитата:

Сообщение от laimas (Сообщение 408902)

Поэтому, прежде чем тренироваться с корзиной, необходимо определиться с торговой политикой магазина, а уж затем, зная каков механизм набора товаров в корзину будет, можно определять код обслуживающий ее.

У меня нет магазина)) это я просто хотела попробовать поработать с корзиной товаров в целях обучения. наверное стоило начать работу просто с таблицей( чем я сейчас и занялась).

laimas 23.02.2016 18:42

Цитата:

Сообщение от r1sus
У меня нет магазина

Сейчас нет, потом может будет или кому-то писать придется.
Просто работать с ячейками таблицы, это да, просто на таблице достаточно. А если корзина и завязана на учет товаров на складе, то без сервера клиент не сможет сам товарами распоряжаться, а значит и у клиентского кода обслуживающего корзину будут иные задачи. Это ведь тоже предмет для обучения. )

Dilettante_Pro 23.02.2016 19:04

laimas,
Уважаемый профессор, позвольте с вами не согласиться. Есть как минимум два способа обучения плаванию: первый - подробное изучение теоретических основ плавания, начиная с закона Архимеда, изучение техники плавания различными стилями, методологические основы заплывов на короткие и длинные дистанции ит.д и т.п. Параллельно с этим, под руководством тренера, практические занятия: гребля руками, стоя по пояс в воде, движения ногами, держась за опору, выдох в воду... Второй способ - так сказать, погружение: прыгнуть в воду и пытаться плыть, попутно на практике оптимизируя процесс применительно к различным реальным ситуациям. Оба эти способа существуют параллельно, нисколько не мешая друг другу, а взаимно дополняя и сочетаясь в различных пропорциях. Главный недостаток первого метода, имхо, - необходимость наставника, контролирующего и направляющего - иначе утонешь в пучине необходимых знаний и навыков. Многое в успехе зависит от наставника. Главное достоинство второго метода - вдохновение от успехов пусть в небольших свершениях, осознание проблем, требующих решения, постановка новых задач, исходя из собственного опыта.
Ну ладно - можно долго говорить, главное - к истине много путей.

Dilettante_Pro 23.02.2016 19:41

r1sus,
Для того, чтобы вам можно было ответить конкретно, покажите html-код вашей таблицы

laimas 23.02.2016 19:43

Цитата:

Сообщение от Dilettante_Pro
позвольте с вами не согласиться

Позволяю, и я далек от того, чтобы разводить по этому вопросу полемику, поэтому кратко:

1) Я такой же профессор как и вы. )
2) То что дама учится не следовало из первого поста.
3) Я не предлагал учиться плавать в пустом бассейне.
4) Учиться класть кирпичную кладку не означает начинать сразу со строительства дома.
5) Не каждый мастер кладки кирпича хороший печник.

Программирование и плавание все таки разные профессии, и для первого образное мышление не менее важно как и логическое. Вы может сколь угодно не соглашаться, я же могу заключить пари и выиграть его даже на постах этого форума, по тем случаям, когда научились, выучили как вы выражаетесь теорию, но так и не научились мышлению, тому куда теорию применять то и как. И выиграю потому, что такие случаи не единичны. Мало научиться обращаться к элементом и запихивать данные в массивы и объекты, это в любом случае есть практика, со временем она появится, а вот не учиться ставить задачи и их цели, это плохо. И школа не ради теории учит решать задачи, а ради развития мышления, что и в самообразовании должно присутствовать всегда.

r1sus 23.02.2016 23:57

laimas,

Моей целью было и есть научится работать с элементами корзины, удалять , изменять кол-во. со временем я научусь записывать и извлекать эти данные. разве я могу на этапе обучения изменения данных на странице ставить себе задачу разобраться в политике магазина
Я с вами согласна, что нужно развивать образное мышление, но на данный момент мне не хватает знаний языка , чтобы реализовать даже простые функции. мой пост скорее для того чтобы мне посоветовали направление , в котором двигаться, что еще выучить . вектор в общем)

r1sus 24.02.2016 00:01

Dilettante_Pro,
Спасибо за понимание.
На данный момент у меня есть вот такая таблица. пока что удалить ничего не получилось.
<table id="basket_goods">
        <tr class="table_frame">
       
            <td>Description</td>
            <td>Color</td>
            <td>Size</td>
            <td>Qty</td>
            <td>Price</td>
            <td>Delete</td>
        </tr>

        <tr class="goods ">
          <td class = "item_name"><h4>Lorem ipsum</h4></td>
            <td class ="item_color">Black</td>
            <td class="item_size">35</td>
            <td class="item_qty">1</td>
            <td class = "item_price">&euro;99.95</td>
            <td class="delete_item"><a href = "">&times;</a></td>
        </tr>
</table>

вот js , но не работает .
function deleteRow(r)
{
    var i=r.parentNode.parentNode.rowIndex;
    document.getElementById('basket_goods').deleteRow(i);
}
document.querySelector(".delete_item").addEventListener("click", deleteRow(this));

r1sus 24.02.2016 00:17

Удалять строку получилось! заменила ссылку со знаком удалить на кнопку
:dance:
подскажите, теперь тему удалить нужно или модераторы сами удаляют ?

laimas 24.02.2016 02:30

Цитата:

Сообщение от r1sus
Моей целью было и есть научится работать с элементами корзины, удалять , изменять кол-во. со временем я научусь записывать и извлекать эти данные. разве я могу на этапе обучения изменения данных на странице ставить себе задачу разобраться в политике магазина


Значит все таки корзина, тогда придется вас огорчить - корзина виртуального магазина, это далеко не таблица или иной объект DOM на странице, в котором нужно удалять или добавлять элементы. А значит и учитесь вы совсем не тому. Политика магазина же не имеет отношения к внутренней и внешней политике, к любой из партий, и ходить на политзанятия я вас не заставляю. :)

Цитата:

Сообщение от r1sus
Я с вами согласна, что нужно развивать образное мышление, но на данный момент мне не хватает знаний языка

Образное мышление как раз не привязано к языку программирования, это умение видеть, понимать, связывать явления и процессы, а способствуют его развитию даже чтение художественно литературы.

Магазины реальные вы уж точно посещали, а значит представить пусть в общих чертах структуру магазина можете. А теперь попробуйте эту структуру переложить на виртуальный магазин.

Вся "политика КПСС" в контексте виртуального магазина в плане отношения с покупателем, это:

а) положили товар в корзину - за мелкими исключениями у всех магазинов это одинаково;
б) оформляем заказ - вот тут все зависит от "устава партии", одни скажут что товара нет, и далее у кого как, а у других такая ситуация исключена, ибо при отсутствии товара покупатель не сможет выполнить п. а).

Где находится склад реального магазина - у вас в квартире или магазин имеет собственные постройки?

Вот так и в виртуальном магазине - склад товаров его, это сервер. И если ведется учет товаров на складе, то в некий момент времени товар может быть положен в корзину или уже распродан. А поэтому все запросы на добавление/удаление товара из корзины проходят через кладовщика (сервер). Корзина как таковая в данном случае, это описание товаров находящихся в ней, которое хранят либо в сессии, либо базе. Клиент же получая эти данные отображает их посредством каких либо DOM объектов. Щелчки по элементам этих объектов только инициализируют запрос к серверу (кладовщику).

Если учета товаров на складе нет и у магазина в этом случае своя политика взаимоотношений к покупателем, то только в этом случае можно полностью перенести корзину на клиента - описание ее и отображение. В этом случае корзина, это описание ее товаров либо в cookies, либо в localStorage, и добавлять/удалять товар нужно в этих описаниях, а представление ее (таблица или иное) перерисовывается с каждым изменением состояния корзины, а щелчки по представлению корзины всего лишь источник этих событий.

Если и в случае когда на складе ведется учет, а описание корзины хранит не сервер, то прежде чем добавить/удалить товар в описании корзины, при хранении его в localStorage, требуется известить сервер об этом. В случае хранения описания товаров корзины в cookies сервер может самостоятельно проверить ее товарные соответствия.

------------------

Почитайте о корзинах виртуальных магазинов, что стоит за этим понятием, а написано об этом много. А щелкнуть и удалить DOM элемент, это далеко от сути понятия корзина.

Dilettante_Pro 24.02.2016 06:30

r1sus,
Поздравляю, успехов!
Темы не удаляют - может понадобиться другим.

r1sus 24.02.2016 15:45

laimas,
я прочитала и о локальном хранилище, на просторах интернета сегодня можно найти готовые решения и использовать их как заблагорассудится. Мне пока не хватает знаний , чтобы осмыслить как куда и что отправлять.
Может я зря начала с корзины, просто это типичное задание и мне захотелось сделать его самой.
Я очень много читаю художественных книг, но в языках программирования мне сложно понимать процессы, и я думаю, именно от нехватки знаний и практики. Вот решила переключится на книги по js, хотя худ.литература доставляет мне намного больше удовольствия)
В любом случае , спасибо за внимание к моему вопросу и предложенными темами для размышления )

laimas 24.02.2016 15:52

Ну так корзина, да в общем не только она, это хранимые данные в первую очередь, и для описания товаров ее достаточно хранить в ней идентификатор товара, его цену и количество. Этим вы должны управлять, и если на клиенте, то клиентским скриптом. Таблицы и прочее, это всего лишь отображение корзины, ее интерфейс.
Можно конечно описать корзину и таблицей, но хранить такое это накладно, а управлять таким, это сложно.


Часовой пояс GMT +3, время: 02:41.