Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 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>


принцип работы моего кода таков - при загрузке страницы, подсчитываются общий вес и сумма товаров, после загрузки если дважды кликнуть по одному товару, то он удалится и общий вес и сумма пересчитаются, так можно пересчитывать нажатием на кнопку, ну а если добавлен новый товар, тот же принцип как и с удалением, ну его думаю сам допилишь
Ответить с цитированием
  #12 (permalink)  
Старый 07.12.2012, 15:53
Аватар для derbass
Аспирант
Отправить личное сообщение для derbass Посмотреть профиль Найти все сообщения от derbass
 
Регистрация: 07.12.2012
Сообщений: 59

Да, приложил не то слово как много)) Ещё раз приношу извинения) Сейчас беру напилник и пилю) Спасибо за наводку! Есть нескромный вопрос - можно ли будет отписаться тебе на мыло, если будут вопросы?
Ответить с цитированием
  #13 (permalink)  
Старый 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
},


это не ошибка, просто так на много наглядней))
Ответить с цитированием
  #14 (permalink)  
Старый 07.12.2012, 15:54
Аватар для ОлегА
Профессор
Отправить личное сообщение для ОлегА Посмотреть профиль Найти все сообщения от ОлегА
 
Регистрация: 25.08.2011
Сообщений: 420

пиши, не вопрос, но я редко туда захожу, лучше тут в личку пиши
Ответить с цитированием
  #15 (permalink)  
Старый 07.12.2012, 16:13
Аватар для derbass
Аспирант
Отправить личное сообщение для derbass Посмотреть профиль Найти все сообщения от derbass
 
Регистрация: 07.12.2012
Сообщений: 59

Понял, мой косяк. Читабельность кода следует чтить
Ответить с цитированием
  #16 (permalink)  
Старый 07.12.2012, 16:21
Аватар для derbass
Аспирант
Отправить личное сообщение для derbass Посмотреть профиль Найти все сообщения от derbass
 
Регистрация: 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 );   
    }

});
Ответить с цитированием
  #17 (permalink)  
Старый 07.12.2012, 16:24
Аватар для derbass
Аспирант
Отправить личное сообщение для derbass Посмотреть профиль Найти все сообщения от derbass
 
Регистрация: 07.12.2012
Сообщений: 59

Мне просто вот что инетересно - как правильн оразграничить, что бы они обе считали свои задачи, отдельно. Когда у меня функции не анонимные ,я могу их добавить, например, и в свой обработчик нажатия кнопки "+" при добавлении строки, и общее количество веса или цены у меня пересчитается
Ответить с цитированием
  #18 (permalink)  
Старый 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())
})
Ответить с цитированием
  #19 (permalink)  
Старый 07.12.2012, 16:45
Аватар для derbass
Аспирант
Отправить личное сообщение для derbass Посмотреть профиль Найти все сообщения от derbass
 
Регистрация: 07.12.2012
Сообщений: 59

Пытаюсь подвязать на свою задачу, в принципе пока ясно)
Ответить с цитированием
  #20 (permalink)  
Старый 07.12.2012, 16:51
Аватар для derbass
Аспирант
Отправить личное сообщение для derbass Посмотреть профиль Найти все сообщения от derbass
 
Регистрация: 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 );   
    }

привязал к элементу, указал где и что считать, добавил взов функции пересчета при нажатии кнопки добавить и удалить. Ппц, все равно одна и та же беда
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не могу сформулировать jQuery .live() для динамического DOM элемента artnik Events/DOM/Window 2 26.09.2015 23:30
хочу инвайт на хабр macdack Оффтопик 45 28.07.2013 23:18
jQuery - осуществление динамического подсчета derbass Элементы интерфейса 0 07.12.2012 13:39
Вопрос поддержки старых методов jQuery antonM jQuery 1 04.10.2012 00:08
2 разных модуля на jQuery - как подключить? finder jQuery 4 23.03.2012 22:29