我创建了一个javascript计算器,我使用了变量,但它不起作用
我尝试使用document.getElementById("box1").value
而不仅仅是v1
而且我看到有些内容发生了变化,如果我输入1111
我得到了11 + 11
,它有什么不同,为什么?
我不知道是什么问题,我尝试了一些事情但没有改变。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>JS calculator</title>
</head>
<body>
<input id="box1" type="text" placeholder="Number one" />
<select name="" id="select">
<option value="+">+</option>
<option value="-">-</option>
<option value="*">*</option>
<option value="/">/</option>
</select>
<input id="box2" type="text" placeholder="Number two" />
<button onclick="count()">Check</button>
<a id="output"></a>
<script>
var v1 = document.getElementById("box1").value;
var v2 = document.getElementById("box2").value;
var sel = document.getElementById("select").value;
var out = document.getElementById("output").innerHTML;
function count() {
if (sel === "+") {
out = v1 + v2;
}
else if (sel === "-") {
out = v1 - v2;
}
else if (sel === "*") {
out = v1 * v2;
}
else if (sel === "/") {
out = v1 / v2;
}
else {
out = "Error Error Error!"
}
}
</script>
</body>
</html>
谢谢! :)
答案 0 :(得分:1)
您的脚本中有3个问题。
首先,你应该在count()函数中获取元素值(因为你想在每次有人点击检查按钮时读取这些值)。
其次,你不应该读取输出值而是写它。
第三,必须将输入值转换为int,以避免类似:1 + 1 = 11。
function count() {
var v1 = parseInt(document.getElementById("box1").value);
var v2 = parseInt(document.getElementById("box2").value);
var sel = document.getElementById("select").value;
var out;
if (sel === "+") {
out = v1 + v2;
} else if (sel === "-") {
out = v1 - v2;
} else if (sel === "*") {
out = v1 * v2;
} else if (sel === "/") {
out = v1 / v2;
} else {
out = "Error Error Error!"
}
document.getElementById("output").innerHTML = out;
}
答案 1 :(得分:1)
您的代码中存在多个错误。
a)方法count()中的代码无法看到用户输入的值,因为在用户有机会写入内容之前,会立即执行设置其值的代码。
b).innerHTML返回的值只是一个值,它不是你可以更新的东西。您需要在HTML元素
上设置innerHTMLdocument.getElementById("output").innerHTML = out;
c)从.innerHTML读取的值是字符串,因此总和将计算字符串的串联而不是您想要的。乘法根本不起作用。
答案 2 :(得分:1)
您的代码存在多个问题:
您必须在v1
中分配v2
,sel
和count()
,否则只会在页面加载时设置一次
变量out
会在您的代码中被覆盖。您应该像这样分配:
var out = document.getElementById("output");
out.innerHTML = "foo";
parseInt()
你可以在这里找到一个JSBin:http://jsbin.com/hotoletore/edit?html,js,output
祝你好运算计:)
答案 3 :(得分:0)
function count() {
var v1 = document.getElementById("box1").value;
var v2 = document.getElementById("box2").value;
var sel = document.getElementById("select").value;
if (sel === "+") {
document.getElementById("output").innerHTML = +v1 + +v2;
}
else if (sel === "-") {
document.getElementById("output").innerHTML = parseInt(v1 - v2);
}
else if (sel === "*") {
document.getElementById("output").innerHTML = parseInt(v1 * v2);
}
else if (sel === "/") {
document.getElementById("output").innerHTML = parseInt(v1 / v2);
}
else {
document.getElementById("output").innerHTML = "Error Error Error!"
}
}
如果您在v1
函数之前放置v2
,sel
,count()
,则初始值为空,空和+。
您必须使用parseInt
解析整数输出。
请注意+v1
将字符串直接转换为int。