我正在用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,依此类推。另外,我在哪里将此代码放在应用程序中?
提前谢谢。
答案 0 :(得分:1)
如果您想使用base-11系统,可以使用基数为11的parseInt
。只需要a
/ A
而不是X
,所以你需要在之前使用替换:
parseInt(document.form.arrow01.value.replace(/x/gi, "a"), 11)
如果您还想使用基数11作为输出,可以使用toString
并再次使用替换:
result.toString(11).replace(/a/gi, "X");
答案 1 :(得分: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);
}