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 相关文章推荐
showModelessDialog()使用详解
Sep 21 Javascript
JQuery 解析多维的Json数据格式
Nov 02 Javascript
js中的caller和callee属性介绍和例子
Jun 07 Javascript
网页禁用右键菜单和鼠标拖动选择方法小结
Feb 25 Javascript
检测一个函数是否是JavaScript原生函数的小技巧
Mar 13 Javascript
利用jQuery实现一个简单的表格上下翻页效果
Mar 14 Javascript
深入理解node.js之path模块
May 03 Javascript
几种响应式文字详解
May 19 Javascript
jQuery常用选择器详解
Jul 17 jQuery
vue使用ajax获取后台数据进行显示的示例
Aug 09 Javascript
微信小程序常用赋值方法小结
Apr 30 Javascript
Vue实现下拉加载更多
May 09 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
thinkphp实现多语言功能(语言包)
2014/03/04 PHP
phpcms手机内容页面添加上一篇和下一篇
2015/06/05 PHP
javascript 处理HTML元素必须避免使用的一种方法
2009/07/30 Javascript
js去字符串前后空格5种实现方法及比较
2013/04/03 Javascript
javascript 判断整数方法分享
2014/12/16 Javascript
Javascript的表单验证-初识正则表达式
2016/03/18 Javascript
Struts2+jquery.form.js实现图片与文件上传的方法
2016/05/05 Javascript
微信小程序开发之Tabbar实例详解
2017/01/09 Javascript
轻松实现jQuery添加删除按钮Click事件
2017/03/13 Javascript
自定义vue全局组件use使用、vuex的使用详解
2017/06/14 Javascript
webstorm添加*.vue文件支持
2018/05/08 Javascript
详解React中setState回调函数
2018/06/14 Javascript
Vue路由history模式解决404问题的几种方法
2018/09/29 Javascript
[52:27]2018DOTA2亚洲邀请赛 3.31 小组赛B组 paiN vs Secret
2018/04/01 DOTA
[22:59]VGJ.S vs VG 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
Python urllib、urllib2、httplib抓取网页代码实例
2015/05/09 Python
Python安装图文教程 Pycharm安装教程
2018/03/27 Python
NumPy 数学函数及代数运算的实现代码
2018/07/18 Python
Python+OpenCV感兴趣区域ROI提取方法
2019/01/10 Python
selenium+python自动化测试之页面元素定位
2019/01/23 Python
详解Python 调用C# dll库最简方法
2019/06/20 Python
python元组和字典的内建函数实例详解
2019/10/22 Python
Python使用Opencv实现图像特征检测与匹配的方法
2019/10/30 Python
python实发邮件实例详解
2019/11/11 Python
win7上tensorflow2.2.0安装成功 引用DLL load failed时找不到指定模块 tensorflow has no attribute xxx 解决方法
2020/05/20 Python
HTML5安全介绍之内容安全策略(CSP)简介
2012/07/10 HTML / CSS
HTML5中微数据概述及在搜索引擎中的使用举例
2013/02/07 HTML / CSS
YSL圣罗兰美妆英国官网:Yves Saint Laurent Beauty UK
2019/08/03 全球购物
美国小蜜蜂Burt’s Bees德国官网:天然唇部、皮肤和身体护理产品
2020/06/14 全球购物
结婚典礼证婚词
2014/01/08 职场文书
《小小竹排画中游》教学反思
2014/02/26 职场文书
党组织领导班子整改方案
2014/10/25 职场文书
聘任合同书
2015/09/21 职场文书
2016年寒假政治学习心得体会
2015/10/09 职场文书
Python之基础函数案例详解
2021/08/30 Python
Golang连接并操作MySQL
2022/04/14 MySQL