Вход

Просмотр полной версии : перемножить значения ячеек в таблице


obscurant
14.06.2013, 11:03
Здравствуйте.
Необходимо найти итоговое значение заказов в таблице. Значение "price" умножить на количество "quantity" и сложить все эти значения.
Таблица такая:

<tr>
<td class="price">364.00</td>
<td class="quantity">3</td>
</tr>
<tr>
<td class="price">900.00</td>
<td class="quantity">2</td>
</tr>
<tr>
<td class="price">450.00</td>
<td class="quantity">1</td>
</tr>


сложение ячеек "price" сделал, по примеру, найденному на этом сайте,


<script>
$(document).ready(function(){
$(document).ready(function () {

var sum = 0;
$("#product_table .price").each( function () {
sum += parseInt( $(this).text(), 10 );
});
alert(sum);
});
});
</script>



а как сначала перемножить две ячейки - не пойму

рони
14.06.2013, 11:22
obscurant,
:write:
<!DOCTYPE HTML>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script>
$(function () {
var sum = 0;
$("#product_table .price").each( function () {
sum += parseInt( $(this).text(), 10 ) * parseInt( $(this).next().text(), 10 )
});
alert(sum);
});
</script>


</script>
</head>

<body>
<table id="product_table">
<tr>
<td class="price">364.00</td>
<td class="quantity">3</td>
</tr>
<tr>
<td class="price">900.00</td>
<td class="quantity">2</td>
</tr>
<tr>
<td class="price">450.00</td>
<td class="quantity">1</td>
</tr>

</table>
</body>
</html>

Deff
14.06.2013, 11:26
<script type="text/javascript" src="http://yandex.st/jquery/1.7.2/jquery.min.js"></script>
<script>
$(document).ready(function(){
$(document).ready(function () {

var sum = 0;
$("#product_table tr").each( function () {
var mn=$(this).find('td');
sum += (+mn.eq(0).text())*(+mn.eq(1).text());
});
alert(sum);
});
});
</script>


<table id=product_table>
<tr>
<td class="price">364.00</td>
<td class="quantity">3</td>
</tr>
<tr>
<td class="price">900.00</td>
<td class="quantity">2</td>
</tr>
<tr>
<td class="price">450.00</td>
<td class="quantity">1</td>
</tr></table>

obscurant
14.06.2013, 12:39
спасибо большое!
а вот еще вопрос - планируется ввести поле для скидки. Обычный input. И как посчитать сумму с учетом этого поля скидки? И на какое событие повесить этот пересчет?

ksa
14.06.2013, 13:43
как посчитать сумму с учетом этого поля скидки?
Х/з что там у тебя за скидка... Процент ли это... А может просто некая сумма... Может какой-то коеффициент...

на какое событие повесить этот пересчет?
Как вариант onchange() того инпута...

obscurant
14.06.2013, 14:09
пока сделал от суммы вычитание числа из input
<input type='text' name='discont' id='discont' />

<script>
$(function () {
var sum = 0;
$("#product_table .price").each( function () {
sum += parseInt( $(this).text(), 10 ) * parseInt( $(this).next().text(), 10 )
});

$("#discont").change(function (e)
{
var Value = $("#discont").val();

sum = sum - Value;
alert(sum);
});



alert(sum);

}
);
</script>


вроде работает.
теперь возникла задача к сумме прибавлять значения доставки и оплаты.
Доставка и Оплата - два селекта такого вида:

<select name="paymen">
<option value="1">Налом</option>
<option value="6" selected="">Кредит</option>
<option value="2">Безнал (+6%)</option>
<option value="5">Картой</option>
</select>

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

ksa
14.06.2013, 14:12
как записать значение для каждого типа оплаты?
На то есть конструкции типа
http://javascript.ru/if
http://javascript.ru/switch

obscurant
14.06.2013, 14:34
не, это-то понятно. просто я имел ввиду как подставить значения скидки в тег option.
дело в том, что значение скидки хранится в базе - а если я пропишу сейчас жестко, что при выборе пункта 2 - делать скидку 6% - вдруг завтра она изменится - и будет неуниверсально.
Просто не знаю в какой аттрибут <option> засунуть это значение, чтобы скриптом можно было выдрать, но и value - нужен, на нем завязан php-скрипт.

ksa
14.06.2013, 14:48
как подставить значения скидки в тег option.
дело в том, что значение скидки хранится в базе - а если я пропишу сейчас жестко, что при выборе пункта 2 - делать скидку 6% - вдруг завтра она изменится - и будет неуниверсально.
Ясно...

Просто не знаю в какой аттрибут <option> засунуть это значение
В любой свой атрибут... Например

<option value="2" data-value='6'>Безнал (+6%)</option>

obscurant
14.06.2013, 15:03
да - вот так - самое то!
и как теперь выдернуть это аттрибут?

ksa
14.06.2013, 15:17
и как теперь выдернуть это аттрибут?
Как враиант...

val=$(<объект>).data('value');

obscurant
14.06.2013, 15:31
не получается :(

сделал
val=$("payment").data("data-value");

рони
14.06.2013, 15:34
$("payment").
нет такой буквы

obscurant
14.06.2013, 15:37
та неее.... я в первом варианте недописал ее. не в этом проблема

Deff
14.06.2013, 16:06
obscurant,
Нарисуйте минимально необходимый HTML для задачи...
очевидно нужна еще и кнопка "Подвести итог"

- Выложите HTML и поставьте задачу, иначе как девица в автосервисе," а Вот эту гаечку прикрутить, да и эту не забудьте"

ksa
14.06.2013, 16:07
не получается :(

сделал
val=$("payment").data("data-value");
Нужно "умело действовать штыком и прикладом" (из устава караульной службы)...

<!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 test(Obj) {
switch (Obj.value) {
case '1':
break;
case '2':
var val=$(Obj.options[Obj.selectedIndex]).data('value');
alert(val);
break;
case '5':
break;
case '6':
break;
default:
break;
};
};
</script>
</head>
<body>
<select name="paymen" id="paymen" onchange='test(this)'>
<option value=""></option>
<option value="1">Налом</option>
<option value="6" selected="">Кредит</option>
<option value="2" data-value='6'>Безнал (+6%)</option>
<option value="5">Картой</option>
</select>
</body>
</html>