我有这样的剧本
$(document).ready(function () {
var sum = 0;
$('.price_jq').each(function () {
var price = $(this);
alert(price.html());
var count = price.parent().find('.count_jq');
alert(count.html());
sum = (price.html() * count.val());
$('.cart_total_price').append(sum + "₴");
});
});
我的HTML
<table>
<td class="cart_price">
<p class="price_jq">{{ product.price }}</p>
</td>
<input size="2" name="count" value="2" class="count_jq" type="text"/>
<td class="cart_total">
<p class="cart_total_price"></p>
</td>
</table>
当我提醒价格时,我得到了我的价值,但是当我想要数数时,我得到了NaN。我做错了什么?
答案 0 :(得分:1)
您的HTML代码不正确,因此您要查找的输入很可能完全在桌面之外。这取决于每个浏览器如何处理错误的HTML代码。
您需要表行来放置表格单元格,表格中的所有内容都必须位于表格单元格内。例如:
<table>
<tr>
<td class="cart_price">
<p class="price_jq">{{ product.price }}</p>
</td>
<td>
<input size="2" name="count" value="2" class="count_jq" type="text"/>
</td>
</tr>
<tr>
<td class="cart_total">
<p class="cart_total_price"></p>
</td>
</tr>
</table>
对于上面的代码,您可以使用.parent().parent().find('.count_jq')
或.closest('tr').find('.count_jq')
从price元素中查找count元素:
$(document).ready(function () {
var sum = 0;
$('.price_jq').each(function () {
var price = $(this);
var count = price.closest('tr').find('.count_jq');
sum = (price.html() * count.val());
$('.cart_total_price').append(sum + "₴");
});
});
我不知道您的要求,但我认为您可能希望将值添加到总和并将其放在循环之后的元素中,而不是为循环中的每个项添加值:
$(document).ready(function () {
var sum = 0;
$('.price_jq').each(function () {
var price = $(this);
var count = price.closest('tr').find('.count_jq');
sum += (price.html() * count.val());
});
$('.cart_total_price').append(sum + "₴");
});