如何使除法符号在基本计算器的数字之间只出现一次

How to make the division sign only occur once between numbers for basic calculator?

本文关键字:一次 之间 数字 符号 除法 何使 计算器      更新时间:2023-09-26

我希望我的计算器除法符号在数字之间只显示一次,换句话说,无论我单击除法按钮多少次,我都希望除法符号出现一次,除非中间有数字,否则它应该只出现一次。

我想要:81/9/3不是:3///3//333

下面的乘法符号也是如此:

    function divide() {
        if (document.getElementById('btndiv').click = true) {
            document.getElementById('TextAreaResultspace').value += '/';
        }
    }
    function multiply(){
        if  (document.getElementById('btnx').click = true) {
            document.getElementById('TextAreaResultspace').value += '*';
        }
    }

类似的东西(符号可以是您想要的任何字符):

var elem = document.getElementById('TextAreaResultspace');
var val = elem.value.trim()
// add symbol only if last character of text input is not a symbol
if(val[val.length-1] != symbol){
    elem.value += symbol;
}

我把空白区三等分了,这样你也不允许出现类似"3///3"的内容。此处测试:http://jsfiddle.net/Y9wzY/1/

Andrei

更新:如何工作:

  • elem变量被分配给结果的对象
  • val变量被赋予elem的当前值,从中删除前导/尾随空白(通过调用trim方法)
  • val.length是val中文本的长度,但第一个字符从0开始,所以最后一个字符在val.length-1位置。因此,val的最后一个字符是val[val.length-1]
  • 如果val中的最后一个字符与您想要添加的字符不同,那么它会将其附加到elem.value中。否则,什么都不会发生

您可以检查TextAreaResultspace的最后一个字符是否是控制字符,如果不是,则只添加符号,也许这样的东西对您有用:

function divide() {
    if (document.getElementById('btndiv').click = true) {
        append_symbol('/');
    }
}
var append_symbol = function(symbol){
    var control_chars = ['*', '/', '-', '+']
    ,   elem = document.getElementById('TextAreaResultspace');
    // add symbol only if last character of text input is not a symbol
    if(control_chars.indexOf(elem.value[elem.value.length-1]) === -1){
        elem.value += symbol;
    } 
}