2015-08-24 2 views
0

Я хочу обновить общее количество всех продуктов на странице корзины, когда количество будет обновлено. что я пытался этоКак получить значения из нескольких элементов

$d=$table.each(function(){ 
     return Number($(this).find('.cart_price>p>span').html())*Number($(this).find('.cart_quantity_input').val()); 
    }).toArray(); 
    alert($d.length); 

но, кажется, его только принимает значение от первого продукта только я попробовал .map() еще такой же результат. Я даже пытался total+= вместо return (total=0 инициализирован в первый) еще ее возвращаемое значение только от первого <tr>.

<tr> «s моего HTLM внутри <table> выглядит следующим образом:

<tr> 
    <td class="cart_product"> 
     ... 
    </td> 
    <td class="cart_description"> 
     ... 
    </td> 
    <td class="cart_price"> 
     <p>₹<span>20</span></p> 
    </td> 
    <td class="cart_quantity"> 
     <div class="cart_quantity_button"> 
      <a class="cart_quantity_up" href="#"> + </a> 
      <input class="cart_quantity_input" type="text" name="quantity" value="8" autocomplete="off" size="2"> 
      <a class="cart_quantity_down" href="#"> - </a> 
     </div> 
    </td> 
    <td class="cart_total"> 
     <p class="cart_total_price"> ₹<span>160</span></p> 
    </td> 
    <td class="cart_delete"> 
     ... 
    </td> 
</tr> 

мне просто нужна сумма каждого (cart_price>span>p)*(.cart_quantity_input.val()).

PS: alert($d.length); не просто проверить, не из ТР во время тестирования, но мне нужно сумму не рассчитывайте

+0

Прежде всего, какой элемент $ table находится в этом коде.? –

+0

$ таблицы является

user3452098

+0

тогда ваш синтаксис говорит, что вы пытаетесь получить значение стоимости каждой таблицы «s, как ** DGS ** сказал, что вы должны попробовать его решение –

ответ

2

Вы должны сначала перебрать каждый tr затем находит значения.

$array=$table.find('tr').each(function(){ 
    var price = Number($(this).find('.cart_price>p>span').html()); 
    var qty = Number($(this).find('.cart_quantity_input').val()); 
    return price*qty; 
}).toArray(); 
alert($array.length); 

Подсчитать Сумма:

total=0; 
$table.find('tr').each(function(){ 
    var price = Number($(this).find('.cart_price>p>span').html()); 
    var qty = Number($(this).find('.cart_quantity_input').val()); 
    total+= price*qty; 
}); 
alert(total); 
+1

Могли бы вы форматировать код, его легче читать и понимать ? – Persijn

+0

Первоначально я думал, что это будет лучше использовать форматирование, используемое спрашивающий, но да, было бы неплохо, если кто-нибудь может легко прочитать, спасибо за внушением – Shubanker

+1

Ниццы, выглядит намного лучше. Если бы я мог: – Persijn

0

Предполагая $table это ваша таблица $table.each() будет работать только один раз на столе.

Чтобы ваша функция выполнения для каждой строки таблицы используйте

$table.find('tr').each()

0

Вы можете перебирать каждую tr в таблице и суммы оп значения

var sum = 0; 
$table.find('tr').each(function() { 
    sum += ($(this).find('.cart_price > p > span').text() * $(this).find('.cart_quantity_input').val()) || 0; 
}); 
alert(sum) 
-1
function getTotalPrice(){ 
var quantity =$('#cart_quantity_input').val(); 
var price= $('#cart_price').text(); 

var total = quantity * price; 
alert(total); 
} 

Просто попробуйте использовать идентификаторы это работало для меня.

Смежные вопросы