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 相关文章推荐
js实现弹窗插件功能实例代码分享
Dec 12 Javascript
Javascript动态引用CSS文件的2种方法介绍
Jun 06 Javascript
javascript实现动态表头及表列的展现方法
Jul 14 Javascript
javascript实现鼠标放上后下边对应内容变换的效果
Aug 06 Javascript
解决angular的$http.post()提交数据时后台接收不到参数值问题的方法
Dec 10 Javascript
JS密码生成与强度检测完整实例(附demo源码下载)
Apr 06 Javascript
jQuery弹出层插件popShow(改进版)用法示例
Jan 23 Javascript
Webpack如何引入bootstrap的方法
Jun 17 Javascript
jQuery插件实现弹性运动完整示例
Jul 07 jQuery
详解小程序毫秒级倒计时(适用于拼团秒杀功能)
May 05 Javascript
Vue中img的src是动态渲染时不显示的解决
Nov 14 Javascript
jQuery实现鼠标移入显示蒙版效果
Jan 11 jQuery
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
Linux环境下php实现给网站截图的方法
2016/05/03 PHP
php基于curl实现的股票信息查询类实例
2016/11/11 PHP
Yii redis集合的基本使用教程
2020/06/14 PHP
用js实现的仿sohu博客更换页面风格(简单版)
2007/03/22 Javascript
jquery $.ajax入门应用二
2008/11/19 Javascript
使用ExtJS技术实现的拖动树结点
2010/08/05 Javascript
Knockoutjs的环境搭建教程
2012/11/26 Javascript
前后台交互过程中json格式如何解析以及如何生成
2012/12/26 Javascript
JavaScript怎么判断图片是否加载完成以便获取其尺寸
2014/05/08 Javascript
鼠标左键单击冲突的问题解决方法(防止冒泡)
2014/05/14 Javascript
JavaScript避免内存泄露及内存管理技巧
2014/09/05 Javascript
浅谈MVC+EF easyui dataGrid 动态加载分页表格
2016/11/10 Javascript
详解vuelidate 对于vueJs2.0的验证解决方案
2017/03/09 Javascript
jQuery Pagination分页插件_动力节点Java学院整理
2017/07/17 jQuery
Bootstrap + AngularJS 实现简单的数据过滤字符查找功能
2017/07/27 Javascript
微信小程序实现日历功能
2018/11/27 Javascript
浅谈ng-zorro使用心得
2018/12/03 Javascript
详解基于Vue/React项目的移动端适配方案
2019/08/23 Javascript
[49:11]完美世界DOTA2联赛PWL S3 INK ICE vs DLG 第二场 12.20
2020/12/23 DOTA
Python脚本在Appium库上对移动应用实现自动化测试
2015/04/17 Python
Python入门之三角函数tan()函数实例详解
2017/11/08 Python
python的pytest框架之命令行参数详解(下)
2019/06/27 Python
python-web根据元素属性进行定位的方法
2019/12/13 Python
基于Python 中函数的 收集参数 机制
2019/12/21 Python
HTML5 canvas基本绘图之图形变换
2016/06/27 HTML / CSS
发现世界上最好的珠宝设计师:JewelStreet
2017/12/17 全球购物
EQVVS官网:设计师男装和女装
2018/10/24 全球购物
批评与自我批评材料
2014/02/15 职场文书
公司聘任书模板
2014/03/29 职场文书
统计员岗位职责范本
2015/04/14 职场文书
推普标语口号大全
2015/12/26 职场文书
会议主持词通用版
2019/04/02 职场文书
创业计划书之牛肉汤快餐店
2019/10/08 职场文书
如何在Python项目中引入日志
2021/05/31 Python
进行数据处理的6个 Python 代码块分享
2022/04/06 Python
GTX1660显卡搭配显示器推荐
2022/04/19 数码科技