07.12.2012, 15:48
|
|
Профессор
|
|
Регистрация: 25.08.2011
Сообщений: 420
|
|
ох многовато приложил, ща я тебе алгоритм накину
<html>
<head>
<script>
$(function(){
function counter(class_name){
var total = 0;
$('#tovar .'+class_name).each(function(){
total += Number($(this).text());
});
$('#tovar .'+ class_name +'_total').html( total );
}
counter('weight'); counter('sum');
$('#start').live('click', function(){
counter('weight');
counter('sum');
});
$('#tovar tr').live('dblclick', function(){
$(this).remove();
counter('weight'); counter('sum');
});
});
</script>
</head>
<body>
<table id="tovar">
<tbody>
<tr>
<td>товар1</td><td class="weight">20</td><td class="sum">200</td>
</tr>
<tr>
<td>товар2</td><td class="weight">40</td><td class="sum">2050</td>
</tr>
<tr>
<td>товар3</td><td class="weight">60</td><td class="sum">2065</td>
</tr>
</tbody>
<tfoot>
<tr>
<th>Общий вес</th><th colspan="2" class="weight_total"></th>
</tr>
<tr>
<th>Общая сумма</th><th colspan="2" class="sum_total"></th>
</tr>
</tfoot>
</table>
<input type="button" id="start" value="посчитать вес">
</body>
</html>
принцип работы моего кода таков - при загрузке страницы, подсчитываются общий вес и сумма товаров, после загрузки если дважды кликнуть по одному товару, то он удалится и общий вес и сумма пересчитаются, так можно пересчитывать нажатием на кнопку, ну а если добавлен новый товар, тот же принцип как и с удалением, ну его думаю сам допилишь
|
|
07.12.2012, 15:53
|
|
Аспирант
|
|
Регистрация: 07.12.2012
Сообщений: 59
|
|
Да, приложил не то слово как много)) Ещё раз приношу извинения) Сейчас беру напилник и пилю) Спасибо за наводку! Есть нескромный вопрос - можно ли будет отписаться тебе на мыло, если будут вопросы?
|
|
07.12.2012, 15:54
|
|
Профессор
|
|
Регистрация: 25.08.2011
Сообщений: 420
|
|
вот это трудночитаемый код,
$.post("/ves/function.inc.php", {'action':action,'type':type,'din':din,'diam':diam,'length':length,'rate':rate,'ves':ves},
лучше делайте так
$.post("/ves/function.inc.php", {
'action' : action,
'type' : type,
'din' : din,
'diam' : diam,
'length' : length,
'rate' : rate,
'ves' : ves
},
это не ошибка, просто так на много наглядней))
|
|
07.12.2012, 15:54
|
|
Профессор
|
|
Регистрация: 25.08.2011
Сообщений: 420
|
|
пиши, не вопрос, но я редко туда захожу, лучше тут в личку пиши
|
|
07.12.2012, 16:13
|
|
Аспирант
|
|
Регистрация: 07.12.2012
Сообщений: 59
|
|
Понял, мой косяк. Читабельность кода следует чтить
|
|
07.12.2012, 16:21
|
|
Аспирант
|
|
Регистрация: 07.12.2012
Сообщений: 59
|
|
это у нас получается анонимная функция, если я правильно понимаю.
$(function(){
function counter(class_name){
var total = 0;
$('#tovar .'+class_name).each(function(){
total += Number($(this).text());
});
$('#tovar .'+ class_name +'_total').html( total );
}
counter('weight'); counter('sum');
$('#start').live('click', function(){
counter('weight');
counter('sum');
});
$('#tovar tr').live('dblclick', function(){
$(this).remove();
counter('weight'); counter('sum');
});
});
А как можно сделать ,что бы я мог считать общий вес, при изменении вес какого-нибудь товара?
$("input#weight").live("change", function() {
var _this = this;
chWeight(_this);
});
...
...
...
и её обработка:
function chWeight(_this) {
var num = $(_this).attr('class').slice(1);
var weight= $("input#weight.n"+num).val();
var total = 0;
$('#tovar .'+class_name).each(function(){
total += Number($(this).text());
});
$('#tovar .weight').html( total );
}
});
|
|
07.12.2012, 16:24
|
|
Аспирант
|
|
Регистрация: 07.12.2012
Сообщений: 59
|
|
Мне просто вот что инетересно - как правильн оразграничить, что бы они обе считали свои задачи, отдельно. Когда у меня функции не анонимные ,я могу их добавить, например, и в свой обработчик нажатия кнопки "+" при добавлении строки, и общее количество веса или цены у меня пересчитается
|
|
07.12.2012, 16:35
|
|
Профессор
|
|
Регистрация: 25.08.2011
Сообщений: 420
|
|
что бы change работал нужно его привязать к текстовому поле например:
<input type="text" value="20" class="input_sum">
$('.input_sum').live('change', function(){
alert($(this).val())
})
|
|
07.12.2012, 16:45
|
|
Аспирант
|
|
Регистрация: 07.12.2012
Сообщений: 59
|
|
Пытаюсь подвязать на свою задачу, в принципе пока ясно)
|
|
07.12.2012, 16:51
|
|
Аспирант
|
|
Регистрация: 07.12.2012
Сообщений: 59
|
|
$("input#allCount").live("change", function() {
var _this = this;
chCount(_this);
});
...
...
function chCount(_this){
var total = 0;
$('input#rate').each(function(){
total += Number($(this).text());
});
$('input#rate').html( total );
}
привязал к элементу, указал где и что считать, добавил взов функции пересчета при нажатии кнопки добавить и удалить. Ппц, все равно одна и та же беда
|
|
|
|