【问题标题】:Have my input box reset after clicking anything but a number单击除数字以外的任何内容后重置我的输入框
【发布时间】:2019-04-27 14:06:04
【问题描述】:

所以我正在构建一个计算器。我遇到的问题是,当我单击计算符号然后输入更多数字时,计算符号会附加到值的前面。

如何重置输入框,以便一旦我点击一个数字,计算符号就会消失并开始一个新的数字列表 - 请参阅下面的一些代码

if (!isNaN(e.target.textContent)) {
      inp.value += parseInt(e.target.textContent);
      val1 = inp.value;
      console.log(val1);
    } else if (
      isNaN(e.target.textContent) &&
      e.target.textContent !== "ENTER"
    ) {
      calculationSign = e.target.textContent;
      inp.value = e.target.textContent;
      console.log(calculationSign);
    } 

【问题讨论】:

    标签: javascript input reset


    【解决方案1】:

    要回答您的问题,您可以测试输入框当前是否输入了运算符:

    if (!isNaN(e.target.textContent)) {
        if (['+', '-', '*', '/'].indexOf(inp.value) !== -1) {
            inp.value = ''
        }
        inp.value += parseInt(e.target.textContent);
        val1 = inp.value;
        console.log(val1);
    }
    

    无论如何,在使用ENTER 触发计算之前,您需要更多的状态和逻辑来确定用户何时输入第二个值,但它可能在您真实代码中的其他位置。

    【讨论】:

    • 是否可以实际解释这段代码的含义?我试图理解它 - 它是说如果这些标志与 inp.value 不匹配然后执行此代码? if (['+', '-', '*', '/'].indexOf(inp.value) !== -1)
    • indexOf 返回给定字符串的索引(此处为inp.value)或-1如果未找到匹配项。所以这条指令的意思是“如果inp.value是这些运算符之一,那么......”。
    猜你喜欢
    • 2011-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-03
    • 2016-03-01
    • 1970-01-01
    • 2014-12-13
    • 2014-10-26
    相关资源
    最近更新 更多