为什么这段代码不起作用?我似乎无法以变量的形式将HTML表单传输到JS。 我正在制作一个二次公式计算器(只是为了好玩)BTW。
<html>
<head>
<script type="text/javascript">
var a = document.getElementById(a1).value;
var b = document.getElementById(b1).value;
var c = document.getElementById(c1).value;
var root = Math.sqrt(Math.pow(b, 2) - 4 * a * c);
var calc1 = (b2 + root) / (2 * a);
var calc2 = (b2 - root) / (2 * a)
function checkVal(){
if(calc1 > calc2){
alert("The lowest x - intercept is" + calc2 + "," + " the highest is" + calc1 + ".");
}else{
alert("The lowest x - intercept is" + calc1 + "," + " the highest is" + calc2 + ".");
};
</script>
</head>
<body>
<form name ="inputvals" method = "get">
<input type = "text" id = "a1" value = "">
<input type = "text" id = "b1" value = "">
<input type = "text" id = "c1" value = "">
<input type=button onclick="checkVal()" />
</form>
</body>
</html>
答案 0 :(得分:0)
首先,我在checkVal
函数中移动了变量,否则它不会在点击时获取任何输入的值。
其次,您需要在document.getElementById('a1').value
第三,由于document.getElementById('a1').value
返回一个字符串,您需要执行parseInt(document.getElementById('a1').value)
..或parseFloat(...)
第四,你使用一个变量b2
,它没有在任何地方声明,所以我声明了它,但不知道它是如何获得它的。
说到Math.sqrt(Math.pow(b, 2) - 4 * a * c)
,我不是数学家,因此无法纠正该部分中的任何数学错误
function checkVal() {
var a = parseInt(document.getElementById('a1').value) || 0;
var b = parseInt(document.getElementById('b1').value) || 0;
var c = parseInt(document.getElementById('c1').value) || 0;
var root = Math.sqrt(Math.pow(b, 2) - 4 * a * c) || 0;
var b2 = b; // ???
var calc1 = (b2 + root) / (2 * a);
var calc2 = (b2 - root) / (2 * a);
if (calc1 > calc2) {
alert("The lowest x - intercept is" + calc2 + ", the highest is" + calc1 + ".");
} else {
alert("The lowest x - intercept is" + calc1 + ", the highest is" + calc2 + ".");
}
}
&#13;
<form name="inputvals" method="get">
<input type="text" id="a1" value="">
<input type="text" id="b1" value="">
<input type="text" id="c1" value="">
<input type=button onclick="checkVal()" />
</form>
&#13;
答案 1 :(得分:-2)
变量不是&#34;绑定&#34;到了田野。更改值不会更改变量的值。您需要在单击按钮时重新读取它们,以获取新输入的值。
声明变量(var a = document.getElementById(a1).value;
等)以及使用它们的逻辑的行必须 你的checkVal
函数。