31.05.2017, 17:01
|
|
Профессор
|
|
Регистрация: 01.12.2016
Сообщений: 3,650
|
|
name это просто название переменной! можете назвать как вам больше нравится.
|
|
31.05.2017, 17:17
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Darth_Pandora,
товаром распоряжается фирма. Это означает, что она должна вести их учет, приниматься заказы, отправлять их.
Это означает, что всякие расчеты на клиенте, это сугубо для клиента. Сервер же (то есть магазин, владелец товаров) просто обязан все данные извне проверять и все расчеты производить сам. А для того чтобы он мог понять какой товар покупают, ему формой должна передаваться не цена товара, а то, что идентифицирует товар, причем индивидуально каждый, то есть нечто уникальное.
Отключаем JS при этом, а магазин будет продолжать работать исправно. Другими словами - в вашем магазине данные, это так, нечто несерьезное, а ведь это основа, не только для информации, но и для контроля. НУ а далее и неверное представление товаров формой, а значит и не то считаем, а самое плохое, это не понимаем для чего считаем.
Это есть концепция. Если вы сможете в реальном магазине товар ценой 3000 руб. купить за 30 руб., тогда я соглашусь с вами, что я не прав.
|
|
31.05.2017, 17:21
|
|
Аспирант
|
|
Регистрация: 29.11.2016
Сообщений: 49
|
|
j0hnik,
Мне неудобно вас снова просить, но не могли бы вы написать как это будет в коде?
А то у меня что-то не получается(
|
|
31.05.2017, 18:01
|
|
Профессор
|
|
Регистрация: 01.12.2016
Сообщений: 3,650
|
|
function summ(){
var input = document.querySelectorAll("form input");
var price =[];
var name =[];
for (i=0; i< input.length; i++) {
if (input[i].checked) {
price.push(input[i].value);
name.push(input[i].nextElementSibling.innerText);
}
}
var sum = 0;
for(var i=0; i<price.length; i++){
sum = sum + parseFloat(price[i]);
}
document.getElementsByName('sumOut')[0].value = sum+" "+name ;
}
document.addEventListener("change", summ);
да тут просто строчку одно добавить надо было.
|
|
31.05.2017, 22:08
|
|
Аспирант
|
|
Регистрация: 29.11.2016
Сообщений: 49
|
|
laimas,
Цитата:
|
всякие расчеты на клиенте, это сугубо для клиента
|
Согласна с вами. Хотя пока мне нужно просто показать как это будет выглядеть внешне. Ни макет в фотошопе, а именно живой пример, где можно понажимать на кнопочки посмотреть как это будет чисто внешне. Насчет того, что проверка данных должна происходить не на стороне клиента опять таки, согласна с вами. Не надо рассматривать мою тестовую версию как что-то окончательное.
j0hnik, А если мне потребуется вывести в div я не смогу сделать так, да?
document.getElementById('sumOutr')[0].value = sum+" "+name ;
<div id="sumOutr"></div>
|
|
31.05.2017, 22:45
|
|
Профессор
|
|
Регистрация: 01.12.2016
Сообщений: 3,650
|
|
Сможете value поменяйте на innerHTML
|
|
31.05.2017, 22:58
|
|
Аспирант
|
|
Регистрация: 29.11.2016
Сообщений: 49
|
|
По идее так, правильно? Только он что-то не работает
<script>
function summ(){
var input = document.querySelectorAll("form input");
var price =[];
var name =[];
for (i=0; i< input.length; i++) {
if (input[i].checked) {
price.push(input[i].innerHTML);
name.push(input[i].nextElementSibling.innerText);
}
}
var sum = 0;
for(var i=0; i<price.length; i++){
sum = sum + parseFloat(price[i]);
}
//document.getElementsByName('sumOut')[0].value = sum+" "+name ;
document.getElementById('sumOutr')[0].innerHTML = sum+" "+name ;
}
document.addEventListener("change", summ);
</script>
<div id="sumOutr"></div>
|
|
31.05.2017, 23:37
|
|
Профессор
|
|
Регистрация: 01.12.2016
Сообщений: 3,650
|
|
Нет вот так.
function summ(){
var input = document.querySelectorAll("form input");
var price =[];
var name =[];
for (i=0; i< input.length; i++) {
if (input[i].checked) {
price.push(input[i].value);
name.push(input[i].nextElementSibling.innerText);
}
}
var sum = 0;
for(var i=0; i<price.length; i++){
sum = sum + parseFloat(price[i]);
}
//document.getElementsByName('sumOut')[0].value = sum+" "+name ;
document.getElementById('sumOutr').innerHTML = sum+" "+name ;
}
document.addEventListener("change", summ);
т.к по id обращаемся [0] тут не нужен
а price.push(input[i].value); трогать не надо, это мы получаем данные, а не выводим
|
|
01.06.2017, 04:05
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Сообщение от Darth_Pandora
|
Хотя пока мне нужно просто показать как это будет выглядеть внешне.
|
А javascript тут причем?
Сообщение от Darth_Pandora
|
Не надо рассматривать мою тестовую версию как что-то окончательное.
|
А что вы тестируете? j0hnik, включил дурку и понеслося...
Допустим, фирма настолько проста, что весь магазин это одна единственная страница на которой 6 товаров и флажки для их выбора. Бог с вами, считайте value выбранных флажков, хотя это свойство флажков должно содержать не цену, а идентификатор товара. Да делайте что хотите, в конечном итоге ведь страдать буду не я, а ваш заказчик.
Но если все таки есть страницы подробного описания товара, на которые можно совершать переход. Будучи на этой странице пользователь также может добавлять/удалять товара в/из корзины, а вы подсчетами чего увлекаетесь?
Может этот последний вопрос все-таки заставит вас задуматься и вы в конце концов поймете, что начиная уже с формы что-то не так.
|
|
01.06.2017, 08:42
|
|
Аспирант
|
|
Регистрация: 29.11.2016
Сообщений: 49
|
|
j0hnik, спасибо, вы меня очень выручили
laimas,
Да поняла я уже, что считать надо на стороне сервера, php скриптом, запихнуть какой-нибудь уникальный ид каждому товару, потом этот ид на сервер к пхп, потом выводить при помощи ajax-са в хтмл. Так?
Да, я знаю, что сейчас делаю бесполезную с точки зрения ценности работу, но клиент захотел увидеть как это будет плюсоваться. (Вот такое у него желание) А как известно работодатель всегда прав.
|
|
|
|