区块变速运动模拟案例

区块变速运动模拟案例区块变速运动模拟案例 红色区块点击按钮实现区块运动速度逐渐减小到 left 值为 300px 停止 1 div 的 style 属性 div1 width 200px height 100px background red position absolute left 0 实现该功能 2 div 的 style 属性 div1 width 200px height 100px ba

  区块变速运动模拟案例

  红色区块点击按钮实现区块运动速度逐渐减小到left值为300px停止。

  (1)div的style属性#div1{width:200px;height:100px;background:red;position:absolute;left:0;}实现该功能。

  (2)div的style属性#div1{width:200px;height:100px;background:red;position:absolute;left:700px;}实现该功能。

  div2的style属性:

  #div2{width:1px;height:300px;background:black;position:absolute;left:300px;}

<input id='btn1' type='button' value='开始运动'/> <div id='div1'></div> <div id="div2"></div>

区块变速运动模拟案例

  (1)根据题意完成的代码:

window.οnlοad=function() { var oDiv=document.getElementById('div1'); var oBtn=document.getElementById('btn1'); oBtn.onclick=function() { setInterval(function(){ /*速度为抵达目标点剩余路程的1/10,由于剩余路程是逐渐减少的,因此理论上speed的值也是在逐渐减小,从而实现变速运动*/ var speed=(300-oDiv.offsetLeft)/10;  /*JavaScript对于left值为整数,出现小数时默认小数部分舍去。而speed=(300-oDiv.offsetLeft)/10的值小于1时,会导致oDiv.offsetLeft+speed实际取值等于oDiv.offsetLeft,即没有抵达left值300px而停止下来,因此需要做向上取整。*/ speed=Math.ceil(speed); oDiv.style.left=oDiv.offsetLeft+speed+'px'; },30); } }

  (2)根据题意完成的代码:

区块变速运动模拟案例

window.οnlοad=function() { var oDiv=document.getElementById('div1'); var oBtn=document.getElementById('btn1'); oBtn.onclick=function() { setInterval(function(){ var speed=(300-oDiv.offsetLeft)/10; /*目标值小于当前值,speed为负值,需要向下取整保证保证speed的值最后出现大于-1的小数时,oDiv的left值还能运动到目标点。*/ speed=Math.floor(speed); oDiv.style.left=oDiv.offsetLeft+speed+'px'; },30); } }

  结合(1)(2)的函数可以对speed进行条件判断实现框架整合。

  speed=speed>0?Math.ceil(speed):Math.floor(speed);

window.οnlοad=function() { var oDiv=document.getElementById('div1'); var oBtn=document.getElementById('btn1'); oBtn.onclick=function() { setInterval(function(){ var speed=(300-oDiv.offsetLeft)/10; speed=speed>0?Math.ceil(speed):Math.floor(speed); oDiv.style.left=oDiv.offsetLeft+speed+'px'; },30); } }

  speed变速运动的数学模型构建:

  AB两地直线距离相距为S,机器人β从A点向B点行进。已知机器人β的每间隔固定时间行进一段路程,其下次行进的距离为当前距离B点路程的1/q(q为正整数),求机器人第n次行进距离的表达式以及前n项和公式Sn

  问题:应用数学式来精确计算区块会在什么位置停止。为什么oDiv.style.left=oDiv.offsetLeft+speed+’px’;就无法大于300px?

  因为speed=(300-oDiv.offsetLeft)/10,即每次前进的距离为剩余距离的1/10,所以在数学模型中oDiv.style.left=oDiv.offsetLeft+speed+’px’的值只会无限逼近300px,不会出现大于300px的情况。

  问题:JS的运算顺序问题,是先计算还是先合并?譬如oDiv.offsetLeft*9/10+oDiv.offsetLeft/10

  因为JS存在默认舍弃小数点取整的问题,那么这个式子是否还等同于:oDiv.offsetLeft?

     如果oDiv.offsetLeft*9/10和oDiv.offsetLeft/10计算的值存在小数,那么是进行舍弃小数取整后进行运算,还是直接小数相加后再判断取整?

为什么JavaScript设置元素的width值需要设置oDiv.style.left=oDiv.offsetLeft+speed+’px’; 的形式,而不能直接设置为oDiv.style.width=9.5px;?
该问题等实质:在JavaScript中在函数赋值与括号内输入值的时候,什么时候带引号,什么时候不带引号,有什么区别?

在JavaScript中函数赋值和括号内输入值带有引号说明赋值或输入值是字符串,不带引号说明赋值是变量或者数字。
直接设置为oDiv.style.left=oDiv.offsetLeft+speed+px;,控制台会报错“ReferenceError: px is not defined”。因为px没有带引号表示是变量,代码中并未定义一个px的变量。oDiv.offsetLeft为数字,speed的值为数字,数字与’px’这个字符串相加,会隐形类型转换为字符串相加,从而得到oDiv.style.left赋值为类似‘16px’这种形式的字符串。

转载于:https://www.cnblogs.com/f6056/p/9376163.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/231779.html原文链接:https://javaforall.net

(0)
上一篇 2025年11月22日 上午10:01
下一篇 2025年11月22日 上午10:22


相关推荐

  • sql 左连接数据出现重复[通俗易懂]

    目录一、简化举例二、查询结果一、简化举例1、表aa2、表bb二、查询结果1、无条件查询2、左链接查询右表数据有重复时,连接关系如下所以查询数据会出现重复,所以要保证右表所关联唯一…

    2022年4月9日
    353
  • 普通人如何靠DeepSeek逆袭?有什么好的教程推荐吗?

    普通人如何靠DeepSeek逆袭?有什么好的教程推荐吗?

    2026年3月16日
    2
  • ubuntu读取can口数据_嵌入式Linux下CAN接口调试[通俗易懂]

    ubuntu读取can口数据_嵌入式Linux下CAN接口调试[通俗易懂]ByToradex秦海1).简介CAN(ControllerAreaNetwork)总线是嵌入式设备最为常用的接口之一,常用于汽车以及工业自动化等嵌入式领域,因此本文就基于嵌入式Linux演示使用CAN总线进行通讯测试。本文所演示的平台来自于ToradexColibriiMX6DL和ApalisiMX6DARM嵌入式平台,这两个平台是都是基于NXPiMX6系列ARM处理器,支持双…

    2022年6月16日
    394
  • 优先级队列(Priority Queue)「建议收藏」

    优先级队列(Priority Queue)「建议收藏」优先级队列(PriorityQueue)注:队列是一种特征为FIFO的数据结构,每次从队列中取出的是最早加入队列中的元素。但是,许多应用需要另一种队列,每次从队列中取出的应是具有最高优先权的元素,这种队列就是优先级队列(PriorityQueue),也称为优先权队列。1.优先级队列的概念1.1优先级队列的定义优先级队列是不同于先进先出队列的另一种队列。每次从队列中取出的是具有最高优先权的元素。

    2022年4月19日
    63
  • Xquery教程

    Xquery教程Xquery 教程给 XQuery 最好的解释就是 XQuery 和 XML 之间的联系就好比 SQL 和数据库之间的联系设计出 XQurey 的目的是为了查询 XML 中的数据可以把 XQurey 理解为 XMLQurey 查询 XQuery 参考你可以找到所有有关操作符号 内置函数以及数据类型的资料 XQuery 参考内容目录 XQuery 介绍介绍了 XQuery 的概念与它的用途 XQuery

    2026年3月18日
    1
  • 三分钟彻底理解冒泡排序

    三分钟彻底理解冒泡排序0.如果遇到相等的值不进行交换,那这种排序方式是稳定的排序方式。1.原理:比较两个相邻的元素,将值大的元素交换到右边2.思路:依次比较相邻的两个数,将比较小的数放在前面,比较大的数放在后面。(1

    2022年7月2日
    31

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号