gpt4 book ai didi

javascript - Javascript 项目出现空错误。 (空==0?!)

转载 作者:行者123 更新时间:2023-11-30 14:10:11 25 4
gpt4 key购买 nike

这里有 2 个选项:Score 和 Wrong。

我想要这个:

  • 如果 answer.value 为空 > wrong+1
  • 如果没有,得分+1。

但它不起作用。

这里有个问题; 4*0(答案是 0 对吗?)

我没有在我的答案输入上写任何东西。所以,> answer.value == null

但是,结果是 score+1。这不是我想要的。

我想,answer.value == 0 就在这里。我怎样才能做我想做的事?

if (result == answer.value) {
score.innerHTML = Number(score.innerHTML) + 1;
} else if (result != answer.value || answer.value == null) {
wrong.innerHTML = Number(wrong.innerHTML) + 1;
}

完整的JavaScript代码和html代码

//idleri alma
var sayi1, sayi2, islem, cevap, btn, dogru, yanlis;

sayi1 = document.getElementById("sayi1");
sayi2 = document.getElementById("sayi2");
islem = document.getElementById("islem");
cevap = document.getElementById("cevap");
btn = document.getElementById("btn");
dogru = document.getElementById("true");
yanlis = document.getElementById("false");

//random sayı oluşturma
function rSayi(ust, alt) {
return Math.floor(Math.random() * (ust - alt)) + alt;
}

function soru() {
sayi1.innerHTML = rSayi(5, 0);
sayi2.innerHTML = rSayi(5, 0);
//islem değişkeni üzerinde değişiklikler
var islemler = ["+", "-", "/", "*"];
islem.innerHTML = islemler[rSayi(4, 0)];
//bölme geldiğinde tam bölünebilme özelliği
if (islem.innerHTML == "/") {
while (true) {
if (sayi1.innerHTML % sayi2.innerHTML == 0) {
break;
}
sayi2.innerHTML = rSayi(50, 0);
}
}
//islem kontrolü
var sonuc, s1, s2;
s1 = Number(sayi1.innerHTML) // sayıları
s2 = Number(sayi2.innerHTML) // number veri türüne geçiş yaptırıyoruz
switch (islem.innerHTML) {
case "+":
sonuc = s1 + s2;
break;
case "-":
sonuc = s1 - s2;
break;
case "*":
sonuc = s1 * s2;
break;
case "/":
sonuc = s1 / s2;
break;
default:
break;
}
//dogru yanlis puanlarını arttırmak

//HERE IS THE PROBLEM!!
btn.onclick = function() {
soru();
var p1, p2;
p1 = Number(dogru.innerHTML);
p2 = Number(yanlis.innerHTML);
if (sonuc == cevap.value) {
dogru.innerHTML = p1 + 1;
//dogru.innerHTML = Number(dogru.innerHTML)+1; !diğer yöntem
} else if (sonuc != cevap.value || cevap.value == null) {
yanlis.innerHTML = p2 + 1;
//yanlis.innerHTML = Number(yanlis.innerHTML)+1; !diğer yöntem
}
}
}

//events
window.onload = function() {
soru();
}
<html>

<head>
<title>Calculator</title>
</head>

<body>
<div id="main">
<div id="sayi1">0</div>
<div id="islem">+</div>
<div id="sayi2">0</div>
<div id="equal">=</div>
<div id="_cevap"><input id="cevap"></div>
<div id="_btn"><button id="btn">Cevapla</button></div>
<div id="clear"></div>
<div id="true">0</div>
<div id="false">0</div>
</div>
</body>

</html>

最佳答案

您的代码的问题是 Number('')0而不是 null

因此当 <input >没有值,答案被认为是0,这是正确的 4 * 0

另外,使用 ===尽可能防止像这样的自动类型转换。

你可以做的是将逻辑短路,

if(cevap.value === '') // empty is always wrong
yanlis.innerHTML = p2 + 1;
else {
... continue your code here
}

更新代码

//idleri alma
var sayi1, sayi2, islem, cevap, btn, dogru, yanlis;

sayi1 = document.getElementById("sayi1");
sayi2 = document.getElementById("sayi2");
islem = document.getElementById("islem");
cevap = document.getElementById("cevap");
btn = document.getElementById("btn");
dogru = document.getElementById("true");
yanlis = document.getElementById("false");

//random sayı oluşturma
function rSayi(ust, alt) {
return Math.floor(Math.random() * (ust - alt)) + alt;
}

function soru() {
sayi1.innerHTML = rSayi(5, 0);
sayi2.innerHTML = rSayi(5, 0);
//islem değişkeni üzerinde değişiklikler
var islemler = ["+", "-", "/", "*"];
islem.innerHTML = islemler[rSayi(4, 0)];
//bölme geldiğinde tam bölünebilme özelliği
if (islem.innerHTML == "/") {
while (true) {
if (sayi1.innerHTML % sayi2.innerHTML == 0) {
break;
}
sayi2.innerHTML = rSayi(50, 0);
}
}
//islem kontrolü
var sonuc, s1, s2;
s1 = Number(sayi1.innerHTML) // sayıları
s2 = Number(sayi2.innerHTML) // number veri türüne geçiş yaptırıyoruz
switch (islem.innerHTML) {
case "+":
sonuc = s1 + s2;
break;
case "-":
sonuc = s1 - s2;
break;
case "*":
sonuc = s1 * s2;
break;
case "/":
sonuc = s1 / s2;
break;
default:
break;
}
//dogru yanlis puanlarını arttırmak

//HERE IS THE PROBLEM!!
btn.onclick = function() {
soru();
var p1, p2;
p1 = Number(dogru.innerHTML);
p2 = Number(yanlis.innerHTML);
if(cevap.value === '') {
yanlis.innerHTML = p2 + 1;
} else if (sonuc == cevap.value) {
dogru.innerHTML = p1 + 1;
//dogru.innerHTML = Number(dogru.innerHTML)+1; !diğer yöntem
} else if (sonuc != cevap.value) {
yanlis.innerHTML = p2 + 1;
//yanlis.innerHTML = Number(yanlis.innerHTML)+1; !diğer yöntem
}
}
}

//events
window.onload = function() {
soru();
}
<html>

<head>
<title>Calculator</title>
</head>

<body>
<div id="main">
<div id="sayi1">0</div>
<div id="islem">+</div>
<div id="sayi2">0</div>
<div id="equal">=</div>
<div id="_cevap"><input id="cevap"></div>
<div id="_btn"><button id="btn">Cevapla</button></div>
<div id="clear"></div>
<div id="true">0</div>
<div id="false">0</div>
</div>
</body>

</html>

关于javascript - Javascript 项目出现空错误。 (空==0?!),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54604078/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com