Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 23.01.2013, 18:45
Новичок на форуме
Отправить личное сообщение для w1ck3d Посмотреть профиль Найти все сообщения от w1ck3d
 
Регистрация: 23.01.2013
Сообщений: 7

Ячейки таблицы и их значение
День добрый. Есть таблица типа
<table id="product_table">
                    <tr>
                        <th>
                            Name
                        </th>
                        <th class="count">
                            Count
                        </th>
                        <th class='price'>
                            Price
                        </th>
                        <th>
                            Discount
                        </th>
                    </tr>
</table>


В эту таблицу при нехитрых действиях пользователя вставляются идентичные поля при помощи jquery, т.е. если юзер нажал кнопку, добавилось следующее
<tr>
                        <th>
                            Name
                        </th>
                        <th class="count">
                            Count
                        </th>
                        <th class='price'>
                            Price
                        </th>
                        <th>
                            Discount
                        </th>
</tr>

и в таблице уже не одна строка, а две. В полях с классом price будет числовое значение, мне нужно обойти все теги с классом price и просуммировать общее значение. Также эти поля можно удалять, функция реализована также на jquery. В чем проблема: посчитать общую сумму я могу, т.к. у меня есть переменная с этим значением. Но! При удалении ячейки сумма, понятное дело, не обновляется.

Т.е. как я понимаю, мне нужно при помощи цикла обойти все теги с классом price, взять из них значение, сложить и вывести. Если строка удаляется, опять же обходим все теги и суммируем значение. Получается некая функция.

Если кто знает, как вышеописанные действия реализовать на jquery или с помощью каких методов их реализовать, прошу подсказать. Спасибо.
Ответить с цитированием
  #2 (permalink)  
Старый 23.01.2013, 19:07
Новичок на форуме
Отправить личное сообщение для w1ck3d Посмотреть профиль Найти все сообщения от w1ck3d
 
Регистрация: 23.01.2013
Сообщений: 7

Сообщение от Дзен-трансгуманист Посмотреть сообщение
function sumPrices () {
  var sum = 0;
  $('#product_table .price').each( function () {
    sum += parseInt( $(this).text(), 10 );
  });
  return sum;
}

Может быть так, хотя в джуквери я полный ноль.

UPD: если цены дробные и с точкой в качестве разделителя, то использовать
parseFloat( $(this).text() );
Да, работает. Благодарю
Ответить с цитированием
  #3 (permalink)  
Старый 25.01.2013, 18:11
Новичок на форуме
Отправить личное сообщение для w1ck3d Посмотреть профиль Найти все сообщения от w1ck3d
 
Регистрация: 23.01.2013
Сообщений: 7

del

Последний раз редактировалось w1ck3d, 29.01.2013 в 00:00.
Ответить с цитированием
  #4 (permalink)  
Старый 29.01.2013, 00:06
Новичок на форуме
Отправить личное сообщение для w1ck3d Посмотреть профиль Найти все сообщения от w1ck3d
 
Регистрация: 23.01.2013
Сообщений: 7

Возник новый вопрос. Как обойти все строки таблицы и получить их значение, которое между тегами?
Т.е. есть html-код:
table id="product_table">
                    <tr class='click'>
                        <th class='name'>
                            Name
                        </th>
                        <th class="count">
                            Count
                        </th>
                        <th class='price'>
                            Price
                        </th>
                        <th class='dis_price'>
                            Discount price
                        </th>
                        <th class='discount'>
                            Discount
                        </th>
                    </tr>
                </table>

Таких строк <tr></tr> будет n-ое количество. Как обойти все ячейки из тега <tr></tr> и получить значение, к примеру, между тегом
<th class='name'>name_of_product</th>

Результатом должна быть строка 'name_of_product'.

Я пытался сделать что то типа

$("#product_table .click th").each(function() {
        var result = document.getElementsByClassName($(this).attr('class')).val());
    });


но ничего не получается.

Последний раз редактировалось w1ck3d, 29.01.2013 в 00:12.
Ответить с цитированием
  #5 (permalink)  
Старый 29.01.2013, 00:29
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

<script src="http://code.jquery.com/jquery-latest.js"></script>

<table id="product_table">
                    <tr class='click'>
                        <th class='name'>
                            Name
                        </th>
                        <th class="count">
                            Count
                        </th>
                        <th class='price'>
                            Price
                        </th>
                        <th class='dis_price'>
                            Discount price
                        </th>
                        <th class='discount'>
                            Discount
                        </th>
                    </tr>
                </table>

<script>
var arrTh=[]
$("#product_table .click th").each(function() {
        arrTh.push($(this).attr('class')+"="+$.trim($(this).text()));
    });
alert(arrTh.join(',\n'))
</script>
Ответить с цитированием
  #6 (permalink)  
Старый 29.01.2013, 18:34
Новичок на форуме
Отправить личное сообщение для w1ck3d Посмотреть профиль Найти все сообщения от w1ck3d
 
Регистрация: 23.01.2013
Сообщений: 7

В ниже приведенной таблице у меня стоит обработчик клика правой кнопкой мышки, по которому выводится собственное попап-меню. В этом меню есть опция Edit. Она должна позволять редактировать значения в ячейках таблицы. Т.е. клик ПКМ -> опция Edit -> выводится тег <input> возле ячейки, по которой кликнули -> в инпут записывается текущее значение -> меняем значение на нужное -> жмем enter и значение обновляется в ячейке. Я понимаю, что ввод инфы нужно обрабатывать при помощи
$("#input_id").change(function() {
    // код
});


Проблема только с добавлением этого input в нужное место(либо возле указателя мышки, либо аккурат слева/справа от ячейки, в которой меняем значение). Прошу помощи, как решить эту проблему.

<table id="product_table">
                    <tr class='click'>
                        <th class='name'>
                            Name
                        </th>
                        <th class="count">
                            Count
                        </th>
                        <th class='price'>
                            Price
                        </th>
                        <th class='dis_price'>
                            Discount price
                        </th>
                        <th class='discount'>
                            Discount
                        </th>
                    </tr>
                </table>
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Получить значение ячеек определенной строки таблицы AMSPeople Элементы интерфейса 2 28.12.2012 22:57
При клике менять значение в ячейке таблицы edmundantes Events/DOM/Window 8 27.04.2012 17:26
onmouseout для ячейки таблицы. Sir_Hally Events/DOM/Window 2 24.01.2012 17:21
OnClick ячейки таблицы и ссылки в этой ячейке MasDen Javascript под браузер 2 30.06.2011 10:34
ComboBox и текущее значение ячейки posta ExtJS 1 27.08.2010 13:54