我有一个像这样的简单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] 删除。
我来说两句