嗯,我的Javascript作业遇到了这个问题。我需要制作一个二进制翻译器,Javascript并不是真的要我...
它有效但不是真的应该......如果我用变量声明变量,它就可以了。但是,如果我使用document.getElementById
使其成为某种交互式,那么它就不想工作了。它只是给了NaN。我知道这不是一个数字,但是我使用了parseInt(),并且没有document.getElementById
...
以下是代码的工作原理:
var input = 15;
function convertdec()
{
document.getElementById("output").innerHTML
= "binary number: " + parseInt(input).toString(2);
}
输出是1111,这是正确的,但这是它应该如何工作以及我希望它如何:
var input = document.getElementById("input").value;
function convertdec()
{
document.getElementById("output").innerHTML
= "binary number: " + parseInt(input).toString(2);
}
如果你填写15,那么这个输出也应该是1111,但它说:
二进制数:NaN
如果有人可以帮助我,那真的很棒!
<!DOCTYPE html>
<html>
<head>
<title>Binairy Converter</title>
<link type="text/css" href="global.css" rel="stylesheet" />
<script type="text/javascript" src="javascript.js"></script>
</head>
<body>
<div id="main">
<input type="text" name="text" id="input" />
<input type="button" id="conbin" onclick="convertbin()" value="bin to dec" />
<p id="output" ><p>
</div>
</body>
</html>
var input;
function convertdec()
{
input = document.getElementById("input").value;
document.getElementById("output").innerHTML = "binary number: " + parseInt(input).toString(2);
}
但是谢谢你的帮助
答案 0 :(得分:3)
你在获取函数外部的DOM元素方面做得很好,因为这种DOM解析很昂贵并且DOM没有改变,但你需要获取函数内部的值来获取它们的当前值,而不是值在页面加载。试试这个:
var input = document.getElementById("input");
var output = document.getElementById("output");
function convertdec()
{
output.innerHTML = "binary number: " + parseInt(input.value, 10).toString(2);
}
另请注意,parseInt()
如果你有一个前导零,则会在八进制中解析,所以要求它为“08”会给你“10”。使用parseInt(num, 10)
修复此问题。我也在上面的例子中制作了这个mod。
答案 1 :(得分:2)
这可能是你如何显示片段的一个神器...但看起来你正在设置输入到页面加载时的任何值...你可能会做得更好
function convertdec()
{
var input = document.getElementById("input").value;
document.getElementById("output").innerHTML = "binary number: " + parseInt(input).toString(2);
}
以便在调用函数时设置值
答案 2 :(得分:2)
在上下文中没有看到这个,这是我怀疑正在发生的事情:
// you're getting the value from the textbox as it exists
// when the page is rendered: ""
var input = document.getElementById("input").value;
// when you call this, it operates on value ... which is always ""
function convertdec()
{
document.getElementById("output").innerHTML
= "binary number: " + parseInt(input).toString(2);
}
一个微妙的变化应该解决它:
var input = document.getElementById("input");
function convertdec()
{
document.getElementById("output").innerHTML
= "binary number: " + parseInt(input.value).toString(2);
}
附录:正如robrich在回答中指出的那样,使用parseInt(input.value, 10)
将确保文本框中的字符串被解释为基数为10的数字。
答案 3 :(得分:0)
问题的最可能原因是您没有选择正确的元素,因此input
中的实际值不是字符串"15"
。使用input
本身作为ID是可疑的,因为它是标记类型,通常不是ID
您能告诉我们声明input
的HTML吗?