在jquery中将输入中的值一起添加

Ano*_*use 0 jquery

我有下表:

<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.

你怎么解决这个问题?

我也是接近这个完全错误的吗?有没有更好的方法来实现这一目标?

Jos*_*ber 7

你可以简单地把它变成一个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);