似乎无法阻止我的 js 计算器输入两位以上的小数
Can't seem to prevent my js calculator to put more than two decimals
这里首先是项目的代码笔;
https://codepen.io/furkancodes-the-typescripter/pen/jOyGJvx
我试过搜索“.”通过 contains() 也有条件将其禁用,但它无法正常工作。
decimal.addEventListener('click', (e) => {
decimal = e.target.value;
if (display.innerHTML === '') {
result = display.innerHTML = display.innerHTML.concat('0.');
} else if (display.innerHTML === output && display.innerHTML.indexOf(".") < 0) {
display.innerHTML = display.innerHTML.concat('.');
}
});
也尝试想出一个像上面那样的解决方案,但我确信我在这里没能掌握一些东西。任何人都可以让我知道哪里出了问题,并引导我找到正确的路径来“防止我的计算器允许超过一位小数”以及我可以做出的任何其他改进。
示例输入:
4...4
预期输出:
4.4(计算器显示不超过一位小数)
为了阻止用户在单次输入中输入多于一位的小数点,你可以实现一个计数器。
let decimalCount = 0;
为 .number
按钮的 click
处理程序添加以下检查。
// For the decimal increment decimal counter
if (number.id === ".") {
decimalCount++;
}
// For more than one decimal don't do anything. Return
if (number.id === "." && decimalCount > 1) {
return;
}
当用户输入另一个输入时(.operator
click
处理程序)将十进制计数器重置为 decimalCount = 0;
。
Link: https://codesandbox.io/s/calculator-no-multiple-decimals-2fjnm
用于字符串的写入方法是includes
。
使用它解决问题
decimal.addEventListener('click', function(){
if(display.innerHTML.includes('.') || firstNumber.innerHTML.includes('.')){
decimal.disabled = true;
} else {
decimal.disabled = false;
}
})
这里首先是项目的代码笔; https://codepen.io/furkancodes-the-typescripter/pen/jOyGJvx
我试过搜索“.”通过 contains() 也有条件将其禁用,但它无法正常工作。
decimal.addEventListener('click', (e) => {
decimal = e.target.value;
if (display.innerHTML === '') {
result = display.innerHTML = display.innerHTML.concat('0.');
} else if (display.innerHTML === output && display.innerHTML.indexOf(".") < 0) {
display.innerHTML = display.innerHTML.concat('.');
}
});
也尝试想出一个像上面那样的解决方案,但我确信我在这里没能掌握一些东西。任何人都可以让我知道哪里出了问题,并引导我找到正确的路径来“防止我的计算器允许超过一位小数”以及我可以做出的任何其他改进。
示例输入:
4...4
预期输出:
4.4(计算器显示不超过一位小数)
为了阻止用户在单次输入中输入多于一位的小数点,你可以实现一个计数器。
let decimalCount = 0;
为 .number
按钮的 click
处理程序添加以下检查。
// For the decimal increment decimal counter
if (number.id === ".") {
decimalCount++;
}
// For more than one decimal don't do anything. Return
if (number.id === "." && decimalCount > 1) {
return;
}
当用户输入另一个输入时(.operator
click
处理程序)将十进制计数器重置为 decimalCount = 0;
。
Link: https://codesandbox.io/s/calculator-no-multiple-decimals-2fjnm
用于字符串的写入方法是includes
。
使用它解决问题
decimal.addEventListener('click', function(){
if(display.innerHTML.includes('.') || firstNumber.innerHTML.includes('.')){
decimal.disabled = true;
} else {
decimal.disabled = false;
}
})