0

我正在用 JavaScript 编写一个处理一系列简单方程的应用程序。它主要是涉及从 0 到 10 的数字的加法,但字母 X 也需要可用:算作数字 10。这是我所拥有的一部分:

<script type="text/javascript">
    function updateround() {
        document.form.round01.value = (document.form.arrow01.value -0) + (document.form.arrow02.value -0) + (document.form.arrow03.value -0);
    }
</script>
<body>
    <center>
            <form name="form">
                <table>
                    <tr>
                        <td><input name="arrow01" style="width: 30px;" onChange="updateround()"></td>
                        <td><input name="arrow02" style="width: 30px;" onChange="updateround()"></td>
                        <td><input name="arrow03" style="width: 30px;" onChange="updateround()"></td>
                        <td><input name="round01" style="width: 30px;"></td>
                    </tr>
                </table>
            </form>
    </center>
</body>

如果你运行它,你会得到 4 个输入字段:如果你在前三个输入数字并单击其他地方,它们会在第四个字段中相加。

我正在寻找的是如何制作它,以便如果您在前三个字段之一中输入字母 X,应用程序将其用作等式中的 10。例如,如果您在前三个字段中输入 X、9 和 9,则在第四个字段中输入 28,如果您输入 X、X 和 6,您将获得 26,依此类推。另外,我在哪里把这段代码放在应用程序中?

可能会提前感谢。

4

2 回答 2

1

如果你想使用 base-11 系统,你可以使用parseInt基数 11。只有它需要a/A而不是X,所以你需要在之前使用替换:

parseInt(document.form.arrow01.value.replace(/x/gi, "a"), 11)

如果您还想使用基数 11 进行输出,则可以使用toString并再次替换:

result.toString(11).replace(/a/gi, "X");
于 2013-03-17T11:41:12.937 回答
0

这是要添加的一个小额外功能:

function val_or_x_from_object(obj) {
    if (obj.value == "x" || obj.value == "X") {
        return 10;  
    }
    else {
        val = parseFloat(obj.value);
        return (isNaN(val)? 0 : val);
    }
}

function updateround() {
        document.form.round01.value = val_or_x_from_object(document.form.arrow01) + 
           val_or_x_from_object(document.form.arrow02) + 
            val_or_x_from_object(document.form.arrow03);
    }
于 2013-03-17T11:48:40.960 回答