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代码
Sep 07 Javascript
JS简单实现文件上传实例代码(无需插件)
Nov 15 Javascript
手机平板等移动端适配跳转URL的js代码
Jan 25 Javascript
js的touch事件的实际引用
Oct 13 Javascript
简述JavaScript的正则表达式中test()方法的使用
Jun 16 Javascript
jquery插件格式实例分析
Jun 16 Javascript
JS 根据子网掩码,网关计算出所有IP地址范围示例
Apr 23 Javascript
在Angular中使用JWT认证方法示例
Sep 10 Javascript
微信小程序中显示倒计时代码实例
May 09 Javascript
vue实现歌手列表字母排序下拉滚动条侧栏排序实时更新
May 14 Javascript
Vue.js组件使用props传递数据的方法
Oct 19 Javascript
微信小程序实现多图上传
Jun 19 Javascript
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
CodeIgniter与PHP5.6的兼容问题
2015/07/16 PHP
PHP后期静态绑定之self::限制实例分析
2018/12/21 PHP
php libevent 功能与使用方法详解
2020/03/04 PHP
php设计模式之代理模式分析【星际争霸游戏案例】
2020/03/23 PHP
提高网站信任度的技巧
2008/10/17 Javascript
jquery下组织javascript代码(js函数化)
2010/08/25 Javascript
jquery div 居中技巧应用介绍
2012/11/24 Javascript
调用jQuery滑出效果时闪烁的解决方法
2014/03/27 Javascript
推荐6款基于jQuery实现图片效果插件
2014/12/07 Javascript
JavaScript中Date对象的常用方法示例
2015/10/24 Javascript
javascript生成img标签的3种实现方法(对象、方法、html)
2015/12/25 Javascript
老生常谈onBlur事件与onfocus事件(js)
2016/07/09 Javascript
AngularJS service之select下拉菜单效果
2017/07/28 Javascript
解决Vue打包之后文件路径出错的问题
2018/03/06 Javascript
Vue中插入HTML代码的方法
2018/09/21 Javascript
JavaScript时间与时间戳的转换操作实例分析
2018/12/07 Javascript
JavaScript实现密码强度实时验证
2020/03/18 Javascript
解决vue组件销毁之后计时器继续执行的问题
2020/07/21 Javascript
javascript实现贪吃蛇小游戏
2020/07/28 Javascript
[31:00]2014 DOTA2华西杯精英邀请赛5 24 NewBee VS iG
2014/05/25 DOTA
python select.select模块通信全过程解析
2017/09/20 Python
Python中optparser库用法实例详解
2018/01/26 Python
详解爬虫被封的问题
2019/04/23 Python
python使用KNN算法识别手写数字
2019/04/25 Python
Python 仅获取响应头, 不获取实体的实例
2019/08/21 Python
pygame实现俄罗斯方块游戏(AI篇2)
2019/10/29 Python
如何在vscode中安装python库的方法步骤
2021/01/06 Python
matplotlib绘制多子图共享鼠标光标的方法示例
2021/01/08 Python
CSS3属性box-shadow使用详细教程
2012/01/21 HTML / CSS
毕业生精彩的自我评价分享
2013/10/06 职场文书
创业计划书中要认真思考的问题
2013/12/28 职场文书
员工薪酬福利制度
2014/01/17 职场文书
学生逃课检讨书1000字
2014/10/20 职场文书
学前班学生评语
2014/12/29 职场文书
《刺客之王:C罗全景传记》:时代从来不会亏待手艺人
2019/11/28 职场文书
Go并发4种方法简明讲解
2022/04/06 Golang