0

さて、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 になるはずですが、次のように表示されます。

2進数: 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()、先頭にゼロがある場合は 8 進数で解析されるため、「08」を要求すると「10」がネットに変換されることに注意してください。を使用して修正しparseInt(num, 10)ます。上記の例でもそのmodを作成しました。

于 2013-03-29T21:27:43.490 に答える
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);
}

1 つの微妙な変更で修正する必要があります。

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 に答える
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 に答える
0

この問題の最も可能性の高い原因は、正しい要素を選択していないため、実際の値がinputstring ではないこと"15"です。inputタグタイプであり、通常は ID ではないため、それ自体を ID として使用することは疑わしい

を宣言しているHTMLを見せていただけますinputか?

于 2013-03-29T21:26:12.697 に答える