javascript - For 循环未通过长度
问题描述
我无法弄清楚我做错了什么导致我的 for 循环无法通过我的长度。我正在尝试使用用户输入将二进制转换为十进制,但它不起作用。我所拥有的是
已编辑
var val = $("txtIn").value;
if (cT[1].checked) {
var bVal = val;
if (isNaN(bVal)) {
alert(val + " is not a number. A number is required to run the program.");
} else if ((val % 1) !== 0) {
alert(val + " is not an integer. A whole number is required to run the program.");
} else if (bVal < 0) {
alert(val + " is not able to convert. Input must be positive integer.");
} else {
convertByArrayB(bVal);
}
}
function convertByArrayB(bVal) {
var r, i, j;
for (i = 0; i < bVal.length; i++) {
r = bVal.charAt(i);
if (r !== '1' && r !== '0') {
alert("You did not enter a valid binary number. Please try again!");
}
var nv = parseInt(r, 2);
}
$("txtOut").value = nv;
}
我认为您不需要上半部分,但安全总比抱歉好。预先感谢您的任何帮助。(爱这个社区顺便说一句)
解决方案
当您这样做时,您正在bVal
循环内部进行更改:
bVal = nv;
bVal.length
所以的值undefined
在下一次迭代中,循环停止。
调用的代码parseInt()
应该在循环之后,而不是在循环内部。无需重新分配bVal
,它应该解析bVal
,而不是r[i]
.
function convertByArrayB(bVal) {
var r, i, j;
for (i = 0; i < bVal.length; i++) {
r = bVal.charAt(i);
if (r !== '1' && r !== '0') {
alert("You did not enter a valid binary number. Please try again!");
return;
}
}
var nv = parseInt(bVal, 2);
document.getElementById("txtOut").value = nv;
}
convertByArrayB("101");
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
Result: <input id="txtOut">
推荐阅读
- firefox - Import a security certificate with Firefox add-on
- ruby-on-rails - each or find_each? Or need smart_each?
- html - 定位 iframe
- php - php or html or java or something to destory folders after 1h
- bash - 在 FOR 和 SSH 中执行 CAT
- spring - 将服务注入另一个服务时,Mockito 不会模拟
- ios - 无法让权利错误消失
- cpu-architecture - 现代CPU有压缩指令吗
- java - 如何为独立的 Java 应用程序存储简单数据
- asp.net - 如何在 ASP.net 中创建一个异步更新自身的自定义用户控件?