2 回答

TA貢獻1770條經驗 獲得超3個贊
實際上,您當前的解決方案存在一些問題。
首先,您在
5
秒間隔后首次更改word.innerHTML
,因此它將立即被GAME OVER替換,因此在相差幾毫秒的情況下,您將無法看到所需的輸出。innerHTML
然后,您將用于您的條件,其中
innerHTML
僅用于包含其中某些內容的HTML元素(獲得開始和結束標記),而對于獲取輸入值,您應該使用input.value
。input.innerHTML
因此,為了使您的代碼正常工作,您應該在執行setInterval
之前首先替換innerHTML
。然后,在調用間隔(如果條件滿足)后,應遞增 i
值,然后以遞歸方式再次調用間隔。
所以你的最終代碼應該是這樣的:
var btn = document.querySelector('#btn');
btn.addEventListener("click", myMove);
function myMove() {
var word = document.querySelector('#word');
var input = document.querySelector('#written');
var words = ['xylophone', 'cat', 'bat', 'chollima'];
var i = 0;
word.innerHTML = words[i];
var id = setInterval(frame, 5000);
function frame() {
if (input.value == word.innerHTML) {
clearInterval(id);
i = (i < 3) ? (i + 1) : 0;
word.innerHTML = words[i];
id = setInterval(frame, 5000)
} else {
word.innerHTML = 'GAME OVER';
}
}
}
<div id="heading">TYPING GAME</div>
<label>
<div id="word"></div>
<br>
<input type="text" id="written">
</label>
<button id="btn">START</button>

TA貢獻1865條經驗 獲得超7個贊
不要使用 ,而是使用 input.value:input.innerHTML
var btn= document.querySelector('#btn');
btn.addEventListener("click", myMove);
function myMove() {
var word = document.querySelector('#word');
var input=document.querySelector('#written');
var words=['xylophone', 'cat', 'bat', 'chollima'];
var i=0;
var id = setInterval(frame, 5000);
function frame() {
word.innerHTML=words[i];
i = (i < 3) ?( i+1) : 0;
if (input.value == word.innerHTML) {
clearInterval(id);
} else {
word.innerHTML='GAME OVER';
}
}
}
<div id="heading">TYPING GAME</div>
<label>
<div id="word"></div>
<br>
<input type="text" id="written">
</label>
<button id="btn">START</button>
</body>
添加回答
舉報