我有下表:
<table>
<thead>
<tr>
<th></th>
<th>Female</th>
<th>Male</th>
</tr>
</thead>
<tbody>
<tr>
<td>Rising 1</td>
<td>
<input id="firstinput" />
</td>
<td>
<input id="secondinput" />
</td>
</tr>
<tr>
<td>Rising 2</td>
<td>
<input id="thirdinput" />
</td>
<td>
<input id="fourthinput" />
</td>
</tr>
<tr>
<td>2+</td>
<td>
<input id="fifthinput" />
</td>
<td>
<input id="sixthinput" />
</td>
</tr>
</tbody>
</table>
Run Code Online (Sandbox Code Playgroud)
我想将这些输入中的所有值一起添加并显示它们的值:
$(document).ready(function () {
$('#mybutton').click(function () {
alert(parseInt($('#firstinput').val()) +
parseInt($('#secondinput').val()) +
parseInt($('#thirdinput).val()) +
parseInt($('#fourthinput').val()) +
parseInt($('#fifthinput).val()) +
parseInt($('#sixthinput').val()));
});
});
Run Code Online (Sandbox Code Playgroud)
这只适用于表中存在所有值的情况.如果一个是空的,最后是NaN.
你怎么解决这个问题?
我也是接近这个完全错误的吗?有没有更好的方法来实现这一目标?
你可以简单地把它变成一个or子句:
var total = 0;
$('input').each(function() {
total += (+$(this).val() || 0);
});
alert(total);
Run Code Online (Sandbox Code Playgroud)
记住: +$(this).val()是快捷方式parseInt( $(this).val() ).虽然这很方便,但它遇到了同样的问题parseInt; 即,如果字符串以a开头0,则将其解析为base 8:parseInt("033"); // 27 +"033"; // 27要绝对确定不会发生,请使用parseIntbase 10:parseInt("033",10); // 33因此,在我们的上下文中,你使用它:total + =(parseInt($(this).val(),10)|| 0);