javascript - javascript计算器(我如何使第一次点击不接受操作)
问题描述
我如何使第一次单击不接受操作并返回“0”
这是我的功能
$(document).ready(function(){
$('button').on('click', function(){
var previosValue = $('.viewer').text();
var val = $(this).text();
if(val == "="){
var op = eval($('.viewer').text());
$('.viewer').text(op);
} else if(val == "AC"){
$('.viewer').text("0");
} else {
if($('.viewer').text() == "0"){
$('.viewer').text(val);
} else {
$('.viewer').text(previosValue + val);
}
}
});
});
解决方案
我建议您在用户首先单击操作符号时不要吞下按键。相反,使用初始的“0”作为第一个操作数(即,如果用户在仅显示“0”时单击“+”,则显示“0+”)。
这有一个优势,因为它可以像大多数其他计算器一样工作。在 UI 设计中,一致性是关键。
像这样的东西应该工作:
$(document).ready(function(){
$('button').on('click', function(){
var previosValue = $('.viewer').text();
var val = $(this).text();
if(val == "="){
var op = eval($('.viewer').text());
$('.viewer').text(op);
} else if(val == "AC"){
$('.viewer').text("0");
} else if ($('.viewer').text() != "0" || $.inArray(val, ["/", "*", "-" ,"+"]) > -1){
$('.viewer').text(previosValue + val);
} else {
$('.viewer').text(val);
}
});
});
您还需要检查用户按下时会发生什么,例如“5”、“+”、“*”、“6”。目前显示“5+*6”。您可能希望稍后的操作数覆盖前一个操作数......但这是一个完全不同的问题;-)
推荐阅读
- vb.net - 如何仔细检查文件夹是否为空`?
- c# - MVVM 视图切换 - 在 InitializeComponent 之后未填充新视图数据上下文
- django - 如何在多对多关系django中访问选定名称的ID
- javascript - 在同一行返回箭头函数,打字稿
- pdf - Solr 添加和更新 pdf 文件
- c++ - 覆盖派生类中的二元运算符
- mysql - 无法将 MediaWiki 从 MySQL 迁移到 PostgreSQL
- vue.js - Vuetify 数据表自定义标头在移动设备中不起作用
- azure - 根据传入请求标头将请求转发到 Azure 应用程序网关后端池
- javascript - 在 discord.js 中获取视频 url 并使用 Youtube Api 时 Promise Rejection