Javascript 在JS中构建计算器的问题
我是一个完全的初学者,并且已经开始通过免费代码营学习javascript。我正在尝试编写一个程序,使用基本javascript制作计算器。我的计算器似乎工作正常,只是有几个问题需要解决。编辑以澄清我在这里寻求的帮助。请用下面的操作运行下面代码段中的代码,您将理解我的要求。键入9-2,然后点击“=”计算器应显示“7”。如果在显示“7”后立即键入“2”,屏幕上将显示“72”,这是我不希望它执行的操作。我希望它重置为一个空白屏幕。我遇到的另一个问题是操作符的重复显示。我使用过其他评论者提供的代码,但它们似乎不起作用。我会继续寻找解决办法。谢谢大家Javascript 在JS中构建计算器的问题,javascript,Javascript,我是一个完全的初学者,并且已经开始通过免费代码营学习javascript。我正在尝试编写一个程序,使用基本javascript制作计算器。我的计算器似乎工作正常,只是有几个问题需要解决。编辑以澄清我在这里寻求的帮助。请用下面的操作运行下面代码段中的代码,您将理解我的要求。键入9-2,然后点击“=”计算器应显示“7”。如果在显示“7”后立即键入“2”,屏幕上将显示“72”,这是我不希望它执行的操作。我希望它重置为一个空白屏幕。我遇到的另一个问题是操作符的重复显示。我使用过其他评论者提供的代码,但它
+
、-
、*
、/
和
此时处于活动状态,可在反复按下按钮时重复操作。如何创建只允许显示一次的函数var show=document.getElementById('display');
var重置=错误;
函数clear(){
如果(重置){
show.value='';
重置=错误;
}
}
功能至屏幕(x){
清除();
show.value+=x;
如果(x=='c'){
show.value='';
}
}
函数答案(){
x=显示值;
x=评估值(x);
show.value=x;
重置=错误;
}
函数幂(){
x=显示值;
x=评估值(x*x);
show.value=x;
}
函数退格(){
var num=show.value;
var len=num.length-1;
var newNum=num.substring(0,len);
show.value=newNum;
}
函数百分比(){
x=显示值;
x=评估值(x/100);
show.value=x;
}
函数对立面(){
var n=显示值;
n=n*-1;
show.value=n;
}
函数sqrt(){
变量编号=show.value;
var ans=数学sqrt(数字);
如果(数字<0)
ans=“试试正数!”;
show.value=ans;
}
函数派(){
var pi=show.value;
var结果=Math.PI;
show.value=结果;
}
将重置更改为true,以便将show.value清除为空字符串,从而为您解决nr.2问题参见代码
这是完美的工作代码。您可以在某些地方用i替换x,如:
function power() {
x = eval(i * i);
show.value = x;
reset = true;
}
问题已修复:
var show=document.getElementById('display');
var重置=错误;
var i=“”//存储键入的内容
函数clear(){
如果(重置){
i='';
show.value=i;
重置=错误;
}
}
功能至屏幕(x){
清除();
如果(x==“+”| | x==”-“| | x==”*“| | x==”/“| | x==”){
如果(i.charAt(i.length-1)==x){
返回false;
}
如果(i.length==0){
返回false;
}
}
i+=x;
如果(x=='c'){
i='';
}
show.value=i;
}
函数答案(){
var op=[“+”、“-”、“*”、“/”];
对于(a=0;a
编辑toScreen()
函数,仅添加操作符(如果是)
以前未键入的:
只需在answer()
函数中将reset
设置为false
以下是为您准备的工作片段:
var show=document.getElementById('display');
var重置=错误;
var i=“”;//存储键入的内容
函数clear(){
如果(重置){
i='';
show.value=i;
重置=错误;
}
}
功能至屏幕(x){
清除();
var nottweeds=['+'、'-'、'*'、'/'、'.];//不应重复的字符列表
如果(不是两次,索引(x)>-1){
if(show.value.slice(-1)!=x){//只有在之前没有键入时才键入它
show.value+=x;
}
}
否则{
show.value+=x;
}
如果(x=='c'){
show.value='';
}
}
函数答案(){
var op=[“+”、“-”、“*”、“/”];
对于(a=0;我在上面的“代码片段”上运行了你的代码,但这不起作用。我输入了7-4,然后点击“=”它给了我一个答案,但如果我点击另一个数字,如“4”按钮,它会将该数字添加到“7-4”,并显示“7-44”,而不是清除显示,只显示“4”。@silkshocker查看编辑后的答案。希望现在一切都正常。如果您喜欢,请接受并向上投票。感谢更新。现在我遇到了一个问题,无法在显示的结果上执行操作。例如,在点击“=”按钮获得一个值后,如果我想在不清除屏幕的情况下按“+”向其添加另一个数字,则“+”符号不会出现,并且我无法执行操作算术。这很奇怪,因为我在版本之前的代码允许我这么做。@silkshocker你的问题2避免这个。如果你想只清除数字的屏幕,试试你自己。这不是一个免费的编码网站。是的,它解决了我对#2的问题,但产生了另一个问题,如果我按下像“/”这样的运算符,它只会显示ay运算符前面没有数字。例如,当我按“9-2”时,然后“=”此时屏幕显示“7”,如果我按“/”,它将显示“/”,前面没有“7”,这是我不想要的。比
function power() {
x = eval(i * i);
show.value = x;
reset = true;
}
function toScreen(x) {
clear();
var notTwice = ['+', '-', '*', '/', '.']; //List of chars that should not be repeated
if(notTwice.indexOf(x) > -1){
if(show.value.slice(-1) != x){ //Only type it if it wasn't typed right before
show.value += x;
}
}
else{
show.value += x;
}
if (x === 'c') {
show.value = '';
}
}