【问题标题】:JavaScript Base10 to Base2 FunctionJavaScript Base 10 到 Base 2 函数
【发布时间】:2015-07-29 02:54:59
【问题描述】:

javascript 应该将输入转换为 base2 并将其显示在输出中。我很困惑为什么输出“o”与输入“num”完全相同。 我不明白为什么这行不通。我知道数据被正确传递,因为如果我在函数中输入简单的数学,那么输出就很好。但是,当我尝试进行转换时,它不起作用。

<!DOCTYPE html>
<html>
<head>
    <link rel="stylesheet" href="style.css">
    <title>Base Converter</title>
    <meta charset = "utf-8">
    <script>
        function Dec2Bin(val)
        {
            var num = val;
            var n = num.toString(2);
            convert.o.value = n;
        }
    </script>
</head>
<body>
    <center>
    <div class="banner"> <!--banner area-->
        Convert from base 10 to base 2
    </div>
    <div class="body"> <!--function area-->
        Please choose a number between 1 and 1,024

        <form name="convert" class="alignment">
            <input type="number" name="num">
            <input type="button" value="Convert" onclick="Dec2Bin(num.value)">
            <output name="o"></output>
        </form>
    </div>
</body>

【问题讨论】:

  • int 永远不会改变,所以这将是一个无限循环。也可以change bases using parseInt() and toString()
  • function ConvertToB2(int) {return int.toString(2)}
  • @SpencerWieczorek ,我使用了 toString() ,而不是输出显示不同基数的数字,它显示的数字与输入的数字相同。我编辑了上面的代码.有什么想法吗?
  • @NathanThompson 是的,因为val 的值是一个字符串,所以num 是一个字符串。 .toString(2) 需要在一个数字上完成,因此您只需将其转换为一个。我已将其添加为答案。

标签: javascript html


【解决方案1】:

这是因为num 的值是一个字符串。所以在字符串上做toString 不会做任何事情。您只需将num 更改为一个数字。你可以通过var num = +valvar num = parseInt(val) 来做到这一点:

function Dec2Bin(val)
{
    var num = +val;
    var n = num.toString(2);
    convert.o.value = n;
}
        <form name="convert" class="alignment">
            <input type="number" name="num">
            <input type="button" value="Convert" onclick="Dec2Bin(num.value)">
            <output name="o" value=""></output>
        </form>


注意:小心依赖 DOM 中的 name 项目作为全局数据。因为它可能会导致具有相同名称的多个项目或其他浏览器出现问题。您可能想要分配一个id 并使用document.getElementById()

【讨论】:

  • 不能处理负数
  • @AderemiDayo 是的,这是因为 .toString() 是如何在底片上实现的。见this question。对于这个问题,用户只处理正整数,是对他们方法的修正。
【解决方案2】:

在您的while 循环中,您循环int &gt; 0,但int 永远不会改变。因此,它将永远循环(或 0 次)。

另外,int 在技术上是 JavaScript 中的保留字,因此您应该避免使用它。像num 这样的东西是合适的。

【讨论】:

    猜你喜欢
    • 2017-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多