此处有2个选项:得分和错误。
我想要这个:
但是它不起作用。
这里有一个问题; 4 * 0(答案是0,对吗?)
我没有在答案输入中写任何东西。因此,> answer.value == null
但是,结果是成绩+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>
答案 0 :(得分:2)
您的代码存在问题,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>