我想将这些数字输入相加,每个数字输入与相关范围内的特定价格相关联
但凭借我的功能,我得到了非常错误的结果......
本质上总是连接而不是总和,但我已经尝试了parseFloat和parseInt的各种组合,总是出现相同的错误
我哪里错了?
这里是html:
<table width="300" border="1" style="border-collapse:collapse;">
<tr>
<td width="40">1</td>
<td><input class="txt" type="number" name="txt"/><span class="valore">10</span></td>
</tr>
<tr>
<td>2</td>
<td><input class="txt" type="number" name="txt"/><span class="valore">20</span></td>
</tr>
<tr>
<td>3</td>
<td><input class="txt" type="number" name="txt"/><span class="valore">30</span></td>
</tr>
<tr id="summation">
<td align="right">Sum :</td>
<td align="center"><span id="sum">0</span></td>
</tr>
</table>
这是JQuery:
$(document).ready(function(){
$(".txt").each(function() {
$(this).keyup(function(){
TotalSum();
});
});
});
function TotalSum() {
var sum = 0;
var prezzo = 0;
$(".txt").each(function() {
prezzo = parseFloat($(".valore").text());
if(!isNaN(this.value) && this.value.length!=0) {
sum +=(parseFloat(this.value))*(parseFloat(prezzo));
}
});
$("#sum").html(sum.toFixed(2));
}
非常感谢您的帮助!
答案 0 :(得分:0)
您应该为元素而不是类valore
分配不同的ID。否则,prezzo总是10,因为它是jQuery在类valore
中找到的第一个元素。或者,您可以使用动态选择Chintan建议的兄弟节点的jQuery方法。
其次,将来,如果您要更改$(".valore").text()
元素的内容,了解使用$(".valore").html()
和valore
之间的区别可能会很有用。第一种方法只提取元素中的文本并忽略所有HTML标记,而第二种方法也返回HTML标记。
答案 1 :(得分:0)
这就是你做错了。
您正在使用replay()
选择器获取span
值。有$('.valore')
的3个span元素 - 所以.valore
无论如何都会为您提供组合的连接值prezzo = parseFloat($(".valore").text());
。
请尝试使用"102030"
或更常用的$(this).next().text();
。以下作品。看看吧。
$(this).siblings(".valore").text());
&#13;
$(document).ready(function(){
$(".txt").each(function() {
$(this).keyup(function(){
TotalSum();
});
});
});
function TotalSum() {
var sum = 0;
var prezzo = 0;
$(".txt").each(function() {
prezzo = parseFloat($(this).siblings(".valore").text());
//console.log(prezzo);
if(!isNaN(this.value) && this.value.length!=0) {
sum +=(parseFloat(this.value))*(parseFloat(prezzo));
}
});
$("#sum").html(sum.toFixed(2));
}
&#13;