编写从二进制到十进制的转换形式-我的代码不起作用?(JavaScript和HTML5)

洛根·哈特曼

我有一个像这样的简单HTML表单

<form class="TextCenter" onSubmit="ConversionScript">
    <input type="radio" name="Conversion" value="BintoDec" checked onClick="document.getElementById('stringToConvert').value='10000001 to 129';" /> Binary to Decimal
        <br />
    <input type="radio" name="Conversion" value="DectoBin" onClick="document.getElementById('stringToConvert').value='129 to 10000001'"/> Decimal to Binary
        <br />
        <br />
    String to Convert: 
    <input type="text" id="StringToConvert" value="10000001 to 129" onClick="document.getElementById('stringToConvert').value=''" />
        <br />
        <br />
    <input type="submit" />
</form>

当用户选择输入类型时,他们输入诸如“ 10000000”或“ 129”之类的字符串。然后,在表单提交时,它会根据用户的选择由JavaScript进行转换,如下所示:

/* Misc. Global functions and variables (not used on their own or by one singular thing) */
function GetRadioValue() {
    var inputs = document.getElementsByName("Conversion");
    for (var i = 0; i < inputs.length; i++) {
        if (inputs[i].checked) {
            return inputs[i].value;
        }
    }
}

var stringToConvertRaw = document.getElementById("StringToConvert");
var stringToConvert = parseFloat(stringToConvertRaw.replace(/\D/g,''));
/* End Section */
/* Main Handler Function (initates lower level functions) */
function ConversionScript() {
    var radioValue = GetRadioValue();

    if (radioValue == "BintoDec")
    {
        BinaryToDecimal();
    }
    else if (radioValue == "DecToBin")
    {
        DecimalToBinary();
    }
}
/* End Section */
/* Function to Convert Binary to Decimal */
function BinaryToDecimal() {
    var conversionArray = stringToConvert.split('').reverse();
    var decimalSum = 0;

    for (var i = 0; i < conversionArray.length; i++) {
        if (conversionArray[i] === 1) {
            decimalSum += Math.pow(2, i);
        }
    }

    alert("The binary string " + stringToConvert + " is " + decimalSum + " .");
}
/* End Section */

但是,由于某种原因,在提交表单时,除了重新加载页面外,什么也没有发生。没有警报,什么都没有。我的代码语法是否有问题(我一直在使用Java,所以有可能出现这种情况)还是我犯了另一种错误?(我已经看了一百遍了,但是还没有发现问题,所以...我认为一些新鲜的眼睛可能会有所帮助。)

高斯

由于您实际上并不是在提交表单,因此我会将您的提交输入转换为按钮,然后将onSubmit属性移动到按钮上的onclick属性。

<form class="TextCenter">
    <input type="radio" name="Conversion" value="BintoDec" checked onClick="document.getElementById('stringToConvert').value='10000001 to 129';" /> Binary to Decimal
    <br />
    <input type="radio" name="Conversion" value="DectoBin" onClick="document.getElementById('StringToConvert').value='129 to 10000001'" /> Decimal to Binary
    <br />
    <br /> String to Convert:
    <input type="text" id="StringToConvert" value="10000001 to 129" onClick="document.getElementById('stringToConvert').value=''" />
    <br />
    <br />
    <button type="button" onclick="ConversionScript()" />Submit</button>
</form>

话虽如此,将onclick和onsubmit属性添加到标记通常被认为是不好的做法。您应该使用JavaScript将所有内容与甚至侦听器绑定在一起。

另外,您的脚本中存在一些语法错误,因此我在此处进行了清理:

/* Misc. Global functions and variables (not used on their own or by one singular thing) */
function GetRadioValue() {
    var inputs = document.getElementsByName("Conversion");
    for (var i = 0; i < inputs.length; i++) {
        if (inputs[i].checked) {
            return inputs[i].value;
        }
    }
}

var stringToConvertRaw = document.getElementById("StringToConvert").value;
var stringToConvert = parseFloat(stringToConvertRaw.replace(/\D/g,''));
/* End Section */
/* Main Handler Function (initates lower level functions) */
function ConversionScript() {
    var radioValue = GetRadioValue();

    if (radioValue == "BintoDec")
    {
        BinaryToDecimal();
    }
    else if (radioValue == "DecToBin")
    {
        DecimalToBinary();
    }
}
/* End Section */
/* Function to Convert Binary to Decimal */
function BinaryToDecimal() {
    var conversionArray = stringToConvert.toString().split('').reverse();
    var decimalSum = 0;

    for (var i = 0; i < conversionArray.length; i++) {
        if (conversionArray[i] === 1) {
            decimalSum += Math.pow(2, i);
        }
    }
  }

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

基本二进制到十进制转换程序不起作用(Python)

以下十进制到二进制的转换代码如何工作?

C中的二进制到十进制转换器在某个数字后不起作用

十六进制转换为二进制和十进制转换器

需要将二进制形式的1和0的字符串转换为十进制数

JavaScript-以字符串形式将十进制数转换为4位二进制数

在Swift中在十进制,二进制和十六进制之间转换

C中的二进制到十进制和十六进制

在十进制到二进制代码转换的输出开始时额外加0

我不懂十进制到二进制代码

将十进制值转换为二进制,十六进制和八进制的单个函数不会转换为二进制

负十进制到二进制C代码

我正在尝试将二进制转换为十进制

Perl大数的十进制和二进制转换

大数字的十进制和二进制转换

使用CharAt()和length()将二进制转换为十进制

十进制到二进制自我挑战

在JavaScript中将大量数字从二进制转换为十进制再返回

将十进制转换为二进制的最快方法-Javascript

JavaScript程序将二进制转换为十进制然后返回

JavaScript 中将二进制转换为十进制的内置函数

将带符号的二进制转换为十进制,八进制和十六进制

如何将二进制,八进制和四进制列表转换为十进制列表?

如何在python中将16位十六进制和二进制表示形式转换为十进制浮点数(反之亦然)?

DataGrid单元格-将十进制和二进制数字转换为六进制

使用红宝石过滤器在日志存储中将十六进制字符串转换为二进制和二进制到十进制

十进制到二进制,没有数组和二进制运算符(如“&”)

为什么在我的二进制到十进制转换器程序中只有前 2 个输出是正确的?

使用静态转换类中的反射和泛型将十进制转换为二进制?