本次练习错误总结:

1. 改变border的宽度,属性名称不是直接写border,而是borderWidth。

2. 运动函数 -- 清除定时器 -- 开启新的定时器。  不是在新定时器开启之后再清除,而是开启之前就要在运动函数里清空一次!

3. 这个获取的值需要先parseInt变成数字。  且变量要放在定时器函数里面。(哪个函数使用的变量,就放在哪个函数里。)

var cur = parseInt(getStyle(obj, attr));

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
div{
width: 200px;
height: 200px;
border: 10px solid black;
background-color: yellow;
float: left;
margin: 30px;
}
</style>
<script>
window.onload = function () {
var oDiv1 = document.getElementById('div1');
oDiv1.onmouseover = function () {
startMove(this, 'width', 600)
};
oDiv1.onmouseout = function () {
startMove(this, 'width', 200)
}; var oDiv2 = document.getElementById('div2');
oDiv2.onmouseover = function () {
startMove(this, 'height', 600)
};
oDiv2.onmouseout = function () {
startMove(this, 'height', 200)
}; var oDiv3 = document.getElementById('div3');
oDiv3.onmouseover = function () {
startMove(this, 'font-size', 50)
};
oDiv3.onmouseout = function () {
startMove(this, 'font-size', 10)
}; var oDiv4 = document.getElementById('div4');
oDiv4.onmouseover = function () {
startMove(this, 'borderWidth', 150) //不是border,是borderWidth
};
oDiv4.onmouseout = function () {
startMove(this, 'borderWidth', 10)
};
}; function getStyle(obj, name) {
if(obj.currentStyle)
{
return obj.currentStyle[name];
}
else
{
return getComputedStyle(obj, false)[name];
}
}; function startMove(obj, attr, iTarget)
{
clearInterval(obj.timer); //清除定时器是放在运动函数里,新启动定时器之前,不是新启动的定时器里面。 obj.timer = setInterval( function () { var cur = parseInt(getStyle(obj, attr));//这个变量也要放在定时器里面吗??(一开始是放在运动函数里了)
var speed = (iTarget - cur)/4;
speed = speed>0? Math.ceil(speed):Math.floor(speed); if( cur == iTarget )
{
clearInterval(obj.timer)
}
else
{
obj.style[attr] = cur + speed + 'px';
}
},30)
}
</script>
</head>
<body>
<div id="div1">变宽</div>
<div id="div2">变高</div>
<div id="div3">这些字体会变大哦</div>
<div id="div4">border变化</div>
</body>
</html>

JS错误记录 - getStyle代替offset、任意值运动框的更多相关文章

  1. JS错误记录 - 右侧悬浮框 - 缓冲运动

    本次练习错误总结: 1.  正确: startMove( document.documentElement.clientHeight - oDiv.offsetHeight + scrollTop); ...

  2. JS错误记录 - 微博发布

    <style> *{ margin: 0; padding: 0;} #ul1{ width: 400px; height: 400px; border: 1px solid #000; ...

  3. JS错误记录 - dom操作 - 排序

    本次练习错误总结: 1. for循环要套到按钮的onclick里面,否则onclick点击事件无法依次执行. 2. var n1, var n2 这两个变量是arr.sort排序使用的,所以应该放在s ...

  4. JS错误记录 - 事件 - 拖拽

    错误总结: 1. var disX = 0;   现在window.onload里声明变量,而不是在事件oDiv.onmousedown里面声明并赋值. 对于这个还不是很明白. 2. onmoused ...

  5. JS错误记录 - 按左右箭头div移动、一串div跟着鼠标移动

    本次练习错误总结: 1. div跟着用户操作而移动,首先必须要绝对定位,否则无法移动. 2. if条件语句里面是双等号,不是单等号(赋值). 3. 坐标值没有Right,只能offsetLeft 加减 ...

  6. JS错误记录 - To-do List

    var data = (localStorage.getItem('todolist'))? JSON.parse(localStorage.getItem('todolist')) : { todo ...

  7. JS错误记录 - fgm练习 - 函数传参

    <script> window.onload = function() { var oBtn = document.getElementsByTagName('button')[0]; v ...

  8. JS错误记录 - 记录上次登陆的用户名

    <script> //步骤 1.submit => 用户名存进cookie 2. onload => 从cookie读取用户名 window.onload = function ...

  9. JS错误记录 - 取消事件冒泡、按钮、回车、ctrl回车提交留言

    window.onload = function () { var oDiv = document.getElementById('div1'); var oBtn = document.getEle ...

随机推荐

  1. 实现外网訪问局域网内的SVN——花生壳+visiualSVN实现外网訪问局域网内的SVN(三)

    经过前两篇文章.到眼下为止,我们已经获取了外网域名而且搭建好了SVN server.接下来,我们就总结一下怎样实践实现一下訪问局域网. 1.安装VisiualSVN Server(可见:http:// ...

  2. Oracle 启动失败报错“TNS-12555: TNS:permission denied”解决办法

    [oracle@testdb admin]$ lsnrctl start   LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 10-FEB- ...

  3. DG应用日志相关操作

    应用archive log: recover managed standby database disconnect;     应用redo logfile: recover managed stan ...

  4. Linux 时区的修改

    Linux 时区的修改 1. CentOS和Ubuntu的时区文件是/etc/localtime,但是在CentOS7以后localtime以及变成了一个链接文件 ``` [root@centos7 ...

  5. terminfo 数据库?

    什么是 terminfo 数据库? UNIX 系统上的 terminfo 数据库用于定义终端和打印机的属性及功能,包括各设备(例如,终端和打印机)的行数和列数以及要发送至该设备的文本的属性.UNIX ...

  6. pstree---树状图的方式展现进程

    pstree命令以树状图的方式展现进程之间的派生关系,显示效果比较直观. 语法 pstree(选项) 选项 -a:显示每个程序的完整指令,包含路径,参数或是常驻服务的标示: -c:不使用精简标示法: ...

  7. [React] Define defaultProps and PropTypes as static methods in class component

    class Toggle extends Component { static propTypes = { defaultOn: PropTypes.bool, on: PropTypes.bool, ...

  8. Leetcode47: Palindrome Linked List

    Given a singly linked list, determine if it is a palindrome. 推断一个链表是不是回文的,一个比較简单的办法是把链表每一个结点的值存在vect ...

  9. ubuntu-smb共享文件创建

    如何在计算机上实现资源共享                         --在本地用户目录下,创建一个smb文件夹                         --右击,选择share opt ...

  10. scroll- 滑动条风格调整

    <item name="scrollbarFadeDuration">250</item> <item name="scrollbarDef ...