我希望我的计算器除法符号在数字之间只显示一次,换句话说,无论我单击除法按钮多少次,我都希望除法符号出现一次,除非中间有数字,否则它应该只出现一次。
我想要: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;
}
}