Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Возможно ли? (https://javascript.ru/forum/misc/42664-vozmozhno-li.html)

Faab 05.11.2013 13:58

Цитата:

Сообщение от Chekist (Сообщение 279572)
добавлять id товара в строку класса id полей цены и количества на стадии формирования документа (в php).
Тем самым на выходе кода буду иметь уже готовые разные id с номерами...
хм.. а потом уже только с ними и работать. Тогда и определять никаких родителей не надо :)

Да, именно это я и хотел вам продемонстрировать.

Но порой HTML генерируется не по вашему сценарию (например CMS), и тогда уже надо уметь работать с теми селекторами, которые есть.

Chekist 05.11.2013 14:04

С этой стадией разобрался... теперь сижу ломаю голову как написать следующий скрипт.
Имеется функция, которая по клику считает переменную sumTovar.
Каким образом при следующем клике по этой функции я смогу получить новую переменную, содержащую старое значение sumTovar + новое её значение???
И так каждый раз, когда я вызываю эту функцию. Все время к сумме старых sumTovar прибавлялось бы новое только что рассчитанное.
Понимаю, что цикл... но никак не выходит........

ksa 05.11.2013 14:14

Цитата:

Сообщение от Chekist
при следующем клике по этой функции

На функцию кликнуть нельзя... Кликают на некий ДОМ-элемент...

Faab 05.11.2013 14:15

Я так понимаю это актуальная версия вашего скрипта?

$(function (){

    $('.check').click(function (){

        var o=this.parentNode.parentNode;

        var sum=$(o).find('.tovar-price > span').text();
        sum = parseInt(sum, 10);
        var n=$(o).find('.numbers > input').val();
        if (!n, n<=0) {
                 alert ("Вы выбрали неверное число");
                 exit;
        }
        else
        alert(sum*n);

    });

});


Зачем вам второй скрипт тогда? Добавьте внутри события click проверку на существование значения в sumTovar - если значение не существует то переменной присвойте ноль. Если существует, то присваете переменной это значение. В конце сложить.

Цитата:

Сообщение от ksa (Сообщение 279620)
На функцию кликнуть нельзя... Кликают на некий ДОМ-элемент...

Ага.. я тоже обратил внимание )

ksa 05.11.2013 14:19

Цитата:

Сообщение от Chekist
Понимаю, что цикл...

Какой там цикл? :D

Как вариант...

<!DOCTYPE html>
<html>
<head>
<!--
<script src="http://code.jquery.com/jquery-latest.js"></script>
<link rel="stylesheet" type="text/css" href="tmp.css" />
-->
<style type="text/css">
</style>
<script type="text/javascript">
function inc(Obj) {
	var n=Obj.getAttribute('data-sum');
	Obj.setAttribute('data-sum',++n);
	alert(n);
};
</script>
</head>
<body>
<button onclick='inc(this);'>Test</button>
</body>
</html>

Chekist 05.11.2013 14:34

Цитата:

Сообщение от ksa (Сообщение 279620)
На функцию кликнуть нельзя... Кликают на некий ДОМ-элемент...

Ну уж простите, оговорился - весь в своих мыслях был по этому поводу.
Программированием не занимался никогда и посмотрел несколько уроков - сижу осваиваю самостоятельно.
Еще ни читал Ваши ответы, но идея кстати возникла - создавать массив через цикл, куда записывать сразу 1) сумму за товар 2) его название.
Все же мне кажется почему-то удобнее потом этот вид будет для представления в корзине, ну и суммировать можно значения в нём же.
Как считаете? Коды не прошу - додуматься хочу сам.

Faab 05.11.2013 14:49

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

Например. Готовая сумма (сумма к уплате) - это результатные данные (производный продукт), его записывать в БД не нужно. Что нужно точно? Id продукта, Id покупателя, Id заказа, количество продукта. И это всё что вам надо знать для заказа. Работайте с этими данными, а не с производным результатами.

ksa 05.11.2013 14:54

Chekist, массив "живет" до первой перезагрузки страницы... Или до первой смены страницы...

Корзину "хранить" лучше:
- на сервере (если известен пользователь)
- в сессии
- в куках


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