你正在改变 bVal 你做的时候在循环内部:
bVal
bVal = nv;
所以价值 bVal.length 是 undefined 在下一次迭代中,循环停止。
bVal.length
undefined
调用的代码 parseInt() 应该 后 循环,而不是它内部。没有必要重新分配 bVal ,它应该解析 bVal 不是 r[i] 。
parseInt()
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">