0

好吧,我的 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

如果有人可以帮助我,那就太好了!

编辑

好的,所以有人问我的 HTML:

<!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);
}

但无论如何感谢您的帮助

4

4 回答 4

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). 我也在上面的例子中制作了那个模组。

于 2013-03-29T21:27:43.490 回答
2

这可能是您如何显示片段的工件...但看起来您正在将输入设置为页面加载时的任何值...您可能会更好

function convertdec()
{
    var input = document.getElementById("input").value;

  document.getElementById("output").innerHTML = "binary number: " + parseInt(input).toString(2);
}

以便在调用函数时设置值

于 2013-03-29T21:25:42.910 回答
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 为底的数字。

于 2013-03-29T21:27:13.553 回答
0

问题的最可能原因是您没有选择正确的元素,因此 in 的实际值input不是 string "15"。将input自身用作 ID 是可疑的,因为它是一种标签类型,通常不是 ID

你能告诉我们声明的 HTMLinput吗?

于 2013-03-29T21:26:12.697 回答