Как упростить код на JavaScript?

Пользователь вводит количество проданных кофе за весь день

по формуле ( кофе1_мл * кофе1_колличество)+(кофе2_мл*кофе2_колличество).....(кофе3_мл..)= "Вы израсходовали всего"+ itogoml +" мл";


если будет 100 позиций,как мне упростить код до цикла или сделать его проще?

Как упростить код на JavaScript?
0
DELETED
Автор поста оценил этот комментарий

Мужики, харош его троллировать, расскажите парню про массивы.

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

а лучше про двумерные массивы)

1
Автор поста оценил этот комментарий

http://vigrius.esy.es/pikabu/ лови

<?

$arCoffes = array(

"coffe1"=>"10",

"coffe2"=>"20",

"coffe3"=>"40",

"coffe4"=>"20",

"coffe5"=>"20",

"coffe6"=>"80",

"coffe7"=>"20",

"coffe8"=>"70",

);


?>

price 10P

<br>

<?foreach($arCoffes as $key=>$coffee):?>

<input class = "coffees" type = "hidden" value = <?=json_encode($arCoffes)?>>

<?=$key?> - <?=$coffee?>

<input data-coffee = <?=$key?> class = "counter" name = "<?=$coffee?>" value = 0>

<br>

<?endforeach?>

<div class = "all">

0

</div>

<div class = "price">

0

</div>

<script>

$(function(){

counter = new counter();

counter.init();

})


var counter = function()

{

var self = this;

self.values = {};

self.all = 0;

self.init = function()

{

self.coffes = JSON.parse($(".coffees").val());

$(".counter").each(function(){

var input = $(this);

var coffee = $(this).data("coffee");

var val = $(this).val();

self.values[coffee] = val;

recount();

})

$(".counter").off("input").on("input",function(){

var input = $(this);

var coffee = $(this).data("coffee");

var val = $(this).val();

var oldVal = self.values[coffee];

if(val == "")

{

self.values[coffee] = 0;

}

else

{

self.values[coffee] = val;

}

recount(oldVal,val,coffee);

})

}

function recount(oldValue,newValue,coffee)

{

var values = self.values;

if(oldValue)

{

var minus = oldValue*self.coffes[coffee];

self.all-=minus;

self.counter-=parseInt(oldValue);

var plus = newValue*self.coffes[coffee];

self.all+=plus;

self.counter+=parseInt(newValue);

}

else

{

var keys = Object.keys(self.values);

for(var i = 0 ;i<keys.length;i++)

{

var nowKey = keys[i];

var nowVal = self.values[nowKey];

var objem = self.coffes[nowKey];

var sum = nowVal*objem;

self.all+=sum;

}

self.counter = 0;

}

$(".all").html(self.all);

console.log(self.counter);

$(".price").html(self.counter*10);

}

}

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

ну это прикидка,можно и лучше написать и оптимизировать не пересчитывая все заново а только то что меняется и тд

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

а мб лучше использовать двумерный массив?)
когда мы знаем обьем мл а колличество штук пользователь сам вводит

только я не понимаю как внести в массив значение(шт) которое введет пользователь  в поле input

0
Автор поста оценил этот комментарий

<input type="hidden" id="cofe1" value="1.50">

<input type="hidden" id="cofe2" value="3.40">

<button onClick="jQuery('#N1').val(parseInt(jQuery('#N1').val())-1);jQuery('#N1').change();">-</button>

<input type="number" id="N1" value="0" placeholder="Колличество проданных шт">

<button onClick="jQuery('#N1').val(parseInt(jQuery('#N1').val())+1);jQuery('#N1').change();">+</button>

<br>


<button onClick="jQuery('#N2').val(parseInt(jQuery('#N2').val())-1);jQuery('#N2').change();">-</button>


<input type="number" id="N2" value="0" placeholder="Колличество проданных шт">

<button onClick="jQuery('#N2').val(parseInt(jQuery('#N2').val())+1);jQuery('#N2').change();">+</button>

<button onClick="raschitat();">Рассчитать стоимость</button>

<div id="vsegostuk"></div>

<div id="vsegoml"></div>

<div id="summaprod"></div>


<script type="text/javascript">

function raschitat() {

var a = parseInt(document.getElementById('N1').value);

var b = parseInt(document.getElementById('N2').value);

var c = a + b ;

document.getElementById('vsegostuk').innerHTML = a + " + " + b + " = " + c;


var cofe1 = parseFloat(document.getElementById('cofe1').value);

var cofe2 = parseFloat(document.getElementById('cofe2').value);

var itogoml = (cofe1 * a) + (cofe2 * b) ;

document.getElementById('vsegoml').innerHTML = "Вы израсходовали всего"+ itogoml +" мл";


summaprod = c * 10;

document.getElementById('summaprod').innerHTML = "Вы сегодня продали товаров на сумму "+ summaprod +" р";

}

</script>

0
Автор поста оценил этот комментарий

Ну это не очень интересный метод т.к. таки не чистый, а используется JQuery селектор, но я бы так же сделал. Нахуй обычные селекторы, JQuery поиск да, с подстановкой числа в имя/id объекта и 100500 нумерованных. А вот на одинаковые id/name/etc надеяться не стоит и не стоит так делать.

раскрыть ветку (1)
Автор поста оценил этот комментарий

а если будет 100 товаров у которых 100 разных значений обьема(мл)

показать ответы
0
Автор поста оценил этот комментарий

<?for($i=1;$i<$countCofees;$i++):?>

<div class = "form_coffee">

<input class = "kol">

<input class = "objem">

</div>

<?endfor?>


<script>

$(function(){


$(".kol").off("input").on("input",function(){

recount();

})

$(".objem").off("input").on("input",function(){

recount();

})


})


function recount()

{

var all = 0;

$(".form_coffee").each(function(){

var form = $(this);

var kol = form.find(".kol");

var objem = form.find(".objem");

var summ = kol*objem;

all+=summ;

})

$(".itogo").val(all);

}

</script>

раскрыть ветку (1)
Автор поста оценил этот комментарий

а кнопка по которой он будет вызывать эту функцию?

показать ответы
0
Автор поста оценил этот комментарий

А зачем кнопка? Можно много на что вешать

раскрыть ветку (1)
Автор поста оценил этот комментарий

на костылях это выглядит сейчас так)
http://web-fox23.ru/calc/

а что если будет 1000 товаров
представляешь какая будет формула расчета длинная

показать ответы
7
Автор поста оценил этот комментарий

Забанили на stackoverflow?

раскрыть ветку (1)
Автор поста оценил этот комментарий

лень там регаться)

показать ответы

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества