JavaScript中无法通过div.style.left获取值的解决方法


Posted in Javascript onFebruary 19, 2017

一、问题总结:

    样式必须直接写在元素内部才能通过div.style.left直接获取属性值(也就是必须是内联样式才行),定义在css中的样式不能通过这种方式获取。

   让元素移动到200停止

setTimeout ( function () {  
  var div = document.getElementById("div4");
  //var left = parseInt(div.style.left) + 5;
  var left = div.offsetLeft + 5;
  
  div.style.left = left + "px";
  if (left < 200) {
    setTimeout( arguments.callee, 50);
  }
  
}, 50);

二、关于offsetLeft和left的区别(关于offsetLeft:https://developer.mozilla.org/zh-CN/docs/Web/API/HTMLElement/offsetLeft)

   1.定义了position:relative或absolute属性的元素才有left属性,元素都有offsetLeft属性。

   2.元素内联样式中设置了left,才能通过div.style.left获取;offsetLeft直接通过div.offsetLeft获取。

   3.left可读可写,获取到的是字符串;offsetLeft只读,获取到的是数字。

  相同点:定位方式一样,如果父元素设置了定位元素(position设置为relative或absolute),则相对于定位元素定位,否则就是相对于根元素定位。

三、案例:

    HTMLElement.offsetParent 是一个只读属性,返回一个指向最近的(closest,指包含层级上的最近)包含该元素的定位元素。如果没有定位的元素,则 offsetParent 为最近 的 table 元素对象或根元素(标准模式下为 html;quirks 模式下为 body)。当元素的 style.display 设置为 "none" 时,offsetParent 返回 null。offsetParent 很有用,因为 offsetTop 和 offsetLeft 都是相对于其内边距边界的。

    下面的span的父元素没有设置定位元素,所以该元素的offsetParent为根元素,此时的offsetTop相对于根元素定位。

<div style="width: 300px; border-color:blue;
 border-style:solid; border-width:1;">
 <span>Short span. </span>
 <span id="long">Long span that wraps withing this div.</span>
 </div>
<div id="box" style="position: absolute; border-color: red;
 border-width: 1; border-style: solid; z-index: 10">
</div>
<script>
 var box = document.getElementById("box");
 var long = document.getElementById("long");
 //
 // long.offsetLeft这个值就是span的offsetLeft.
 // span是个行内元素,它没有没absolute定位,但还是默认offserParent就是父元素,而不是根
 //
 box.style.left = long.offsetLeft + document.body.scrollLeft + "px";
 box.style.top = long.offsetTop + document.body.scrollTop + "px";
 box.style.width = long.offsetWidth + "px";
 box.style.height = long.offsetHeight + "px";
</script>

JavaScript中无法通过div.style.left获取值的解决方法

如果给long的父元素添加一个定位属性,结果如下:

JavaScript中无法通过div.style.left获取值的解决方法

 四、总结:

   javascript中通过offsetLeft(offsetTop)方法获取元素偏移值很方便,得到的是数值;改变元素的偏移值使用style.left(top、right、bottom),通过style.left获取的是一个字符串的值,如果要通过style.left来改变元素位置,先要通过parseInt将获取到的当前left值转化为数值。

以上所述是小编给大家介绍的JavaScript中无法通过div.style.left获取值的解决方法,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言。

Javascript 相关文章推荐
javascript写的日历类(基于pj)
Dec 28 Javascript
JS实现文字掉落效果的方法
May 06 Javascript
在AngularJS应用中实现一些动画效果的代码
Jun 18 Javascript
JavaScript预解析及相关技巧分析
Apr 21 Javascript
JS中使用apply、bind实现为函数或者类传入动态个数的参数
Apr 26 Javascript
jQuery双向列表选择器select版
Nov 01 Javascript
jQuery 操作 HTML 元素和属性的方法
Nov 12 jQuery
详解vue为什么要求组件模板只能有一个根元素
Jul 22 Javascript
webpack常用构建优化策略小结
Nov 21 Javascript
基于JavaScript实现十五拼图代码实例
Apr 26 Javascript
vue elementui tree 任意级别拖拽功能代码
Aug 31 Javascript
vue+elementui通用弹窗的实现(新增+编辑)
Jan 07 Vue.js
JS获取浮动(float)元素的style.left值为空的快速解决办法
Feb 19 #Javascript
Angular 输入框实现自定义验证功能
Feb 19 #Javascript
js实现九宫格的随机颜色跳转
Feb 19 #Javascript
原生JS实现垂直手风琴效果
Feb 19 #Javascript
js鼠标移动时禁止选中文字
Feb 19 #Javascript
canvas雪花效果核心代码分享
Feb 19 #Javascript
Ajax和Comet技术总结
Feb 19 #Javascript
You might like
dedecms防止FCK乱格式化你的代码的修改方法
2007/03/17 PHP
php中的filesystem文件系统函数介绍及使用示例
2014/02/13 PHP
PHP调用接口用post方法传送json数据的实例
2018/05/31 PHP
实例讲解php实现多线程
2019/01/27 PHP
JavaScript实现的一个计算数字步数的算法分享
2014/12/06 Javascript
jQuery数据缓存用法分析
2015/02/20 Javascript
jQuery EasyUI实现右键菜单变灰不可用效果
2015/09/24 Javascript
js电话号码验证方法
2015/09/28 Javascript
JavaScript获取URL中参数querystring的方法详解
2016/10/11 Javascript
js+html制作简单日历的方法
2017/06/27 Javascript
vue.js数据绑定操作详解
2018/04/23 Javascript
vue实现打印功能的两种方法
2018/09/07 Javascript
微信小程序 调用远程接口 给全局数组赋值代码实例
2019/08/13 Javascript
Python对list列表结构中的值进行去重的方法总结
2016/05/07 Python
Python探索之ModelForm代码详解
2017/10/26 Python
python学生管理系统开发
2019/01/30 Python
python抖音表白程序源代码
2019/04/07 Python
python 利用浏览器 Cookie 模拟登录的用户访问知乎的方法
2019/07/11 Python
python3中rank函数的用法
2019/11/27 Python
Python Pandas 对列/行进行选择,增加,删除操作
2020/05/17 Python
Python使用for生成列表实现过程解析
2020/09/22 Python
python 爬虫网页登陆的简单实现
2020/11/30 Python
图库照片、免版税图片、矢量艺术、视频片段:Depositphotos
2019/08/02 全球购物
Ariat英国官网:为世界顶级马术运动员制造最优质的鞋类和服装
2020/02/14 全球购物
全球最大化妆品零售网站:SkinStore
2020/10/24 全球购物
自荐信封面
2013/12/04 职场文书
工作中个人的自我评价
2013/12/31 职场文书
全神贯注教学反思
2014/02/03 职场文书
2014庆六一活动方案
2014/03/02 职场文书
安全生产管理合理化建议书
2014/03/12 职场文书
法学自荐信
2014/06/20 职场文书
写给医院的感谢信
2015/01/22 职场文书
护士长2015年终工作总结
2015/04/24 职场文书
2015年手术室工作总结
2015/05/11 职场文书
收入证明范本
2015/06/12 职场文书
人事部:年度述职报告范文
2019/07/12 职场文书