m0_46602893 2021-05-12 13:16 采纳率: 91.5%
浏览 18
已采纳

JS缓冲运动的问题?

<!DOCTYPE html>
<html lang="en">
<head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>Document</title>
      <style>
            #box{width: 200px;height: 200px;top: 300px;background-color: red;position: absolute}
            #deadline{width: 1px;height: 900px;background-color: black;position: absolute;left: 1000px;}
      </style>
      <script>
            window.onload = function(){
                  var BTN = document.getElementById("btn");
                  BTN.onclick = function(){
                        Starmove(1000);
                  }
            }
            var timer = null;
            var Starmove = function(goal){
                  var BOX = document.getElementById("box");
                  var speed = (goal - BOX.offsetLeft)/8;
                  clearInterval(timer);
                  timer = setInterval(function(){
                        if(BOX.offsetLeft == goal ){
                              clearInterval(timer);
                        }else{
                              BOX.style.left = BOX.offsetLeft + speed + "px";
                              
                        }
                        var TEXT = document.getElementById("text");
                        TEXT.value =  TEXT.value  + speed +","+ BOX.offsetLeft + "\n" 
                  },30)
                  
            }
      </script>
</head>
<body>
      <button id="btn">开始运动</button>
      <textarea name="" id="text" cols="30" rows="10"></textarea>
      <div id="box"></div>
      <span id="deadline"></span>
</body>
</html>

问题一    :TEXT.value =  TEXT.value  + speed +","+ BOX.offsetLeft + "\n" 

这句话中等式右边为什么要加一个TEXT.value?而且把TEXT.value加在等式右边的开头和结尾为何反馈的数据刚好颠倒?不加TEXT.value为什么里面的数据不换行?搞不懂

问题二:为什么我的TEXT.value值里面的speed是恒定不变的?而老师的TEXT.value值是不断地在变化?

  • 写回答

1条回答 默认 最新

  • usecf 2021-05-12 16:16
    关注

    问题一:加TEXT.value就是将TEXT.value每次执行的结果拼接保存起来  不加的话,只会用最后一次值覆盖之前的数据

    问题二:speed值不变 是因为你只赋了一次 将var speed = (goal - BOX.offsetLeft)/8;放在定时器中

     timer = setInterval(function(){
                      var speed = (goal - BOX.offsetLeft)/8;

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)