3 Javascript中的“数学”文本框
3 text box Math in Javascript
嗨,我是Javascript中的NewBee。这是我的第二周
下面是一个包含三个输入字段的表单的代码。
字段之间的关系为:
- 第二个字段是第一个字段值的两倍
- 第三个字段是第一个字段的平方
我已经完成了上述操作,但无法完成以下操作:
如果用户在第二个或第三个字段中输入值,脚本应该在其他字段中计算适当的值
如果我在第一个字段中输入值,则当前代码运行良好ONLY。
我希望我能很好地解释,换句话说:我如何在最后一个文本框中输入say 144,而其他两个文本框分别显示12和24。或者如果我输入24,第一个和第三个文本框显示12和144。
谢谢Vipul
<html>
<head>
<script>
window.onload = init;
function init() {
var button = document.getElementById("usrButton");
button.onclick = save;
onkeyup = doMath;
function doMath(){
var base = document.getElementById("base").value;
var baseNumber_timesTwo = document.getElementById("baseNumber_timesTwo").value = (base*2);
var baseNumber_square = document.getElementById("baseNumber_square").value = (base*base) ;
}
}
</script>
</head>
<body>
<form>
<input type="text" name="base" id="base" onkeyup= "doMath()">
<br><br>
<input type="text" name="baseNumber_timesTwo" id="baseNumber_timesTwo" onkeyup= doMath()>
<br><br>
<input type="text" name="baseNumber_square" id="baseNumber_square" onkeyup= doMath()> <br><br>
</form>
</body>
</html>
看看下面的代码:
<html>
<head>
<script>
window.onload = init;
var init = function(){
var button = document.getElementById("usrButton");
button.onclick = save;
onkeyup = doMath;
}
var doMathbase = function(){
console.log('here');
var base = document.getElementById("base").value;
var baseNumber_timesTwo = document.getElementById("baseNumber_timesTwo").value = (base*2);
var baseNumber_square = document.getElementById("baseNumber_square").value = (base*base) ;
}
var doMathBase2Time = function(){
var baseNumber_timesTwo = document.getElementById("baseNumber_timesTwo").value;
var base = document.getElementById("base").value = (baseNumber_timesTwo/2);
var baseNumber_square = document.getElementById("baseNumber_square").value = (base*base) ;
}
</script>
</head>
<body>
<form>
<input type="text" name="base" id="base" onkeyup= "doMathbase()">
<br><br>
<input type="text" name="baseNumber_timesTwo" id="baseNumber_timesTwo" onkeyup= "doMathBase2Time()">
<br><br>
<input type="text" name="baseNumber_square" id="baseNumber_square" onkeyup= "doMathBaseSquare()">
<br><br>
</form>
</body>
您需要将另一个函数绑定到第二个和第三个字段。我做到了第二。现在,如果您在第二个字段中输入一个数字,它将返回"基数"数字和基数的平方。
尝试为第三个:)
这应该符合您的需求:
Fiddle
//declaring those earlier saves you to get those by ID every
//time you call "doMath()" or something else
var base = document.getElementById("base");
var baseNumber_timesTwo = document.getElementById("baseNumber_timesTwo");
var baseNumber_square = document.getElementById("baseNumber_square");
function clearUp() {
base.value = "";
baseNumber_timesTwo.value = "";
baseNumber_square.value = "";
}
function doMath() {
//check which of the fields was filled
if(baseNumber_timesTwo.value){
base.value = baseNumber_timesTwo.value / 2;
}
if(baseNumber_square.value){
base.value = Math.sqrt(baseNumber_square.value);
}
//fill other fields according to that
baseNumber_timesTwo.value = (base.value*2);
baseNumber_square.value = (base.value*base.value) ;
}
如您所见:如果您确保在求值时只给定一个值,则无需编写多个算术函数(这是通过cleanUp()实现的方法)
然而,这个解决方案仍然存在一些缺陷!由于您是js初学者,我建议您阅读代码,并将这些问题的可能解决方案作为一个小练习:-)
-您不能在任何字段中输入2位(或更多)数字,为什么不呢?为了允许这样的数字作为输入,你必须更改什么
-为什么在cleanUp函数中将值设置为"而不是"0"更好(在这种情况下!)?当您尝试使用"0"而不是"时,为什么代码会中断
-为什么doMath()只检查最后两个字段(baseNumber_timesTwo和baseNumber_square)中的值,而忽略"base"字段?
问候,Tim
相关文章:
- 如何使用jquery在填充自动完成的值后使文本框只读
- 使用Clipboard.js复制span文本
- 使用JS如何动态更改显示的html文件中的文本背景颜色
- 用程序搜索JQuery数据表中的文本
- jQuery匹配JSON对象的部分文本
- onkeyup无法动态创建多个文本区域
- 如何在下面的ES6循环中获得前面的文本
- 将输入字段中的文本提交到我的数据库,同时将其添加到我的列表中
- 让文本输入幻灯片显示输入时的新文本输入?然后向后滑动
- 借助asp.net验证或java脚本对多个文本进行验证
- 无法在ajaxStart中更改跨度文本
- Javascript将数学动画化
- Javascript:Unicode符号选择器(用于将数学符号添加到文本区域)
- 3 Javascript中的“数学”文本框
- 添加文本框和下拉值(数学)
- 将数学表达式从文本转换为计算表达式
- 试图从文本框中获取值,并将其用于Javascript中的数学方程(卷)
- 如何计算数学形式和插入数据到文本输入与javascript
- 识别文本区域内的开放数学(XML)代码
- 除非重新加载页面,否则LaTeX不会转换为数学文本