Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Не получается написать скрипт. Не знаю как его реализовать. (https://javascript.ru/forum/dom-window/69123-ne-poluchaetsya-napisat-skript-ne-znayu-kak-ego-realizovat.html)

j0hnik 31.05.2017 17:01

name это просто название переменной! можете назвать как вам больше нравится.

laimas 31.05.2017 17:17

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

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

Это есть концепция. Если вы сможете в реальном магазине товар ценой 3000 руб. купить за 30 руб., тогда я соглашусь с вами, что я не прав.

Darth_Pandora 31.05.2017 17:21

j0hnik,
Мне неудобно вас снова просить, но не могли бы вы написать как это будет в коде?
А то у меня что-то не получается(

j0hnik 31.05.2017 18:01

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);

да тут просто строчку одно добавить надо было.

Darth_Pandora 31.05.2017 22:08

laimas,
Цитата:

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

j0hnik, А если мне потребуется вывести в div я не смогу сделать так, да?

document.getElementById('sumOutr')[0].value = sum+" "+name ;

<div id="sumOutr"></div>

j0hnik 31.05.2017 22:45

Сможете value поменяйте на innerHTML

Darth_Pandora 31.05.2017 22:58

По идее так, правильно? Только он что-то не работает

<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>

j0hnik 31.05.2017 23:37

Нет вот так.
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); трогать не надо, это мы получаем данные, а не выводим

laimas 01.06.2017 04:05

Цитата:

Сообщение от Darth_Pandora
Хотя пока мне нужно просто показать как это будет выглядеть внешне.

А javascript тут причем?

Цитата:

Сообщение от Darth_Pandora
Не надо рассматривать мою тестовую версию как что-то окончательное.

А что вы тестируете? j0hnik, включил дурку и понеслося... :)

Допустим, фирма настолько проста, что весь магазин это одна единственная страница на которой 6 товаров и флажки для их выбора. Бог с вами, считайте value выбранных флажков, хотя это свойство флажков должно содержать не цену, а идентификатор товара. Да делайте что хотите, в конечном итоге ведь страдать буду не я, а ваш заказчик.

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

Может этот последний вопрос все-таки заставит вас задуматься и вы в конце концов поймете, что начиная уже с формы что-то не так.

Darth_Pandora 01.06.2017 08:42

j0hnik, спасибо, вы меня очень выручили :)

laimas,
Да поняла я уже, что считать надо на стороне сервера, php скриптом, запихнуть какой-нибудь уникальный ид каждому товару, потом этот ид на сервер к пхп, потом выводить при помощи ajax-са в хтмл. Так?
Да, я знаю, что сейчас делаю бесполезную с точки зрения ценности работу, но клиент захотел увидеть как это будет плюсоваться. (Вот такое у него желание) А как известно работодатель всегда прав.


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