0
<html>

    <head></head>
    <script type="text/javascript">
        function total() {
            if (document.form.t1.value == cash) {
                var onet = document.form.one.value
            } else {
                var onet = 0;
            }
            if (document.form.t2.value == cash) {
                var twot = document.form.two.value
            } else {
                var twot = 0;
            }
            if (document.form.t3.value == cash) {
                var threet = document.form.three.value
            } else {
                var threet = 0;
            }
            document.form.sum.value = parseFloat(onet) + parseFloat(twot) + parseFloat(threet);
        }
    </script>

    <body>
        <form name="form">
            <ol>
                <li>Amount :
                    <input type="text" name="one" onchange="total()" />Type :
                    <select name="t1" onchange="total()">
                        <option value="cash">cash</option>
                        <option value="cheque">cheque</option>
                    </select>
                    <br/>
                </li>
                <li>Amount :
                    <input type="text" name="two" onchange="total()" />Type :
                    <select name="t2" onchange="total()">
                        <option value="cash">cash</option>
                        <option value="cheque">cheque</option>
                    </select>
                    <br/>
                </li>
                <li>Amount :
                    <input type="text" name="three" onchange="total()" />Type :
                    <select name="t3" onchange="total()">
                        <option value="cash">cash</option>
                        <option value="cheque">cheque</option>
                    </select>
                    <br/>
                </li>
            </ol>Total :
            <input type="text" name="sum" />
        </form>
    </body>

</html>

在上面的代码中,我想做的是:如果用户从选项中选择现金,然后转到下一个字段,它将自动添加到总和中,如果选择了支票,那么它的值将是零或者它将是未添加。因此,如果用户选择两个 vcash 和一个支票,则将添加带有选项 cash 的行,结果将是它们的总和但没有值出现,它将显示为空白。

4

2 回答 2

0

正如 Krisku 所提到的,您需要使用字符串而不是未定义的变量。

否则你可以添加

  var cash = "cash";

你仍然会得到错误的结果为“NaN”。因为当第一个字段值更改时,其他字段变量尚未定义。

所以,为了得到结果,这样做:

    document.form.sum.value = parseFloat(onet) || 0 + parseFloat(twot) || 0 + parseFloat(threet) || 0;

工作小提琴

上面的代码确保您添加了一个数字(至少 0),而不是像 undefined 或 null 之类的其他内容。

于 2013-09-13T05:53:56.057 回答
0

您需要在以下表达式中为名称“cash”加上引号:

if (document.form.t1.value=="cash"){

否则,您尝试与未定义的变量进行比较,测试将失败。

于 2013-09-13T05:48:42.230 回答