Javascript 我的计算器在警告后没有给出响应

Javascript 我的计算器在警告后没有给出响应,javascript,Javascript,我是新来的,试着做计算器, 下面是它的工作原理: 当用户单击屏幕为空时,我希望屏幕显示“输入值” 问题是:当我点击任何按钮时,我不能改变屏幕 以下是代码: const screen=document.querySelector(“.output”) const btns=document.queryselectoral(“.btn”) const equal=document.querySelector(“.equalize”) const clear=document.querySelect

我是新来的,试着做计算器, 下面是它的工作原理: 当用户单击屏幕为空时,我希望屏幕显示“输入值”

问题是:当我点击任何按钮时,我不能改变屏幕

以下是代码:

const screen=document.querySelector(“.output”)
const btns=document.queryselectoral(“.btn”)
const equal=document.querySelector(“.equalize”)
const clear=document.querySelector(“.clear”)
btns.forEach(项目=>{
item.addEventListener(“单击”,函数(){
let warning=document.querySelector(“.warning”)
let number=item.getAttribute(“id”)
如果(screen.innerHTML==警告){
screen.innerHTML=number
}否则{
screen.innerHTML+=数字
}
console.log(screen.innerHTML)
})
})
clear.addEventListener(“单击”,函数(){
screen.innerHTML=“”
})
equal.addEventListener(“单击”,()=>{
如果(screen.innerHTML===“”| | screen.innerHTML===未定义||
screen.innerHTML==null){
screen.innerHTML=“请输入一个值”
}否则{
screen.innerHTML=eval(screen.innerHTML)
}
})

1.
2.
3.
4.
5.
6.
7.
8.
9
0
+
-
/
=
C

screen.innerHTML==warning
永远不会为真
screen.innerHTML
是一个字符串,而
warning
是一个DOM元素。您实际上不需要与任何东西进行比较,只需测试
warning
元素是否存在

您还需要检查当用户单击
=
按钮时是否显示警告,否则在尝试评估时会出现错误

更好的办法可能是在单独的DIV中显示错误消息,而不是使用与等式相同的DIV

const screen=document.querySelector(“.output”)
const btns=document.queryselectoral(“.btn”)
const equal=document.querySelector(“.equalize”)
const clear=document.querySelector(“.clear”)
btns.forEach(项目=>{
item.addEventListener(“单击”,函数(){
let warning=document.querySelector(“.warning”)
let number=item.getAttribute(“id”)
如果(警告){
screen.innerHTML=number
}否则{
screen.innerHTML+=数字
}
console.log(screen.innerHTML)
})
})
clear.addEventListener(“单击”,函数(){
screen.innerHTML=“”
})
equal.addEventListener(“单击”,()=>{
let warning=document.querySelector(“.warning”)
如果(警告){
回来
}
如果(screen.innerHTML.trim()=“”){
screen.innerHTML=“请输入一个值”
}否则{
screen.innerHTML=eval(screen.innerHTML)
}
})

1.
2.
3.
4.
5.
6.
7.
8.
9
0
+
-
/
=
C

首先,学习如何缩进代码(或使用自动格式化程序),这将使您的生活更轻松,很难读取这样的代码。这永远不会是真的
screen.innerHTML===warning
,因为warning是DOM节点,而innerHTML是字符串。问题是,在innerHTML上调用eval的位置是htm标记。这仍然存在问题,因为在评估html时会引发异常。尝试双击
=
谢谢,我已经解决了这个问题,还简化了一些事情。非常感谢!我犯了严重的错误。顺便说一句,当我刷新页面并单击“相等”按钮时,我看到的文本是“未定义”,而不是我的警告所说的,知道吗?尝试使用
if(screen.innerHTML.trim()==”)
。如果DIV中有一个空行,它将不等于空字符串。