为了账号安全,请及时绑定邮箱和手机立即绑定

无法使用动画键入游戏

无法使用动画键入游戏

绝地无双 2022-09-02 19:46:05
我试图构建一个游戏,但我无法正确设置Interval。当我点击开始游戏按钮时,这个词没有打印在屏幕上,5秒后它直接显示GAME OVER。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.innerHTML== 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>
查看完整描述

2 回答

?
德玛西亚99

TA贡献1770条经验 获得超3个赞

实际上,您当前的解决方案存在一些问题。

  1. 首先,您在5秒间隔后首次更改word.innerHTML,因此它将立即被GAME OVER替换,因此在相差几毫秒的情况下,您将无法看到所需的输出。innerHTML

  2. 然后,您将用于您的条件,其中innerHTML仅用于包含其中某些内容的HTML元素(获得开始和结束标记),而对于获取输入值,您应该使用input.valueinput.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>


查看完整回答
反对 回复 2022-09-02
?
鸿蒙传说

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>


查看完整回答
反对 回复 2022-09-02
  • 2 回答
  • 0 关注
  • 92 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号