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 相关文章推荐
解决3.01版的jquery.form.js中文乱码问题的解决方法
Mar 08 Javascript
JSON语法五大要素图文介绍
Dec 04 Javascript
js获取某月的最后一天日期的简单实例
Jun 22 Javascript
jQuery实现网站添加高亮突出显示效果的方法
Jun 26 Javascript
js实现控制textarea输入字符串的个数,鼠标按下抬起判断输入字符数
Oct 25 Javascript
使用json来定义函数,在里面可以定义多个函数的实现方法
Oct 28 Javascript
Bootstrap实现渐变顶部固定自适应导航栏
Aug 27 Javascript
jQuery实现获取选中复选框的值实例详解
Jun 28 jQuery
微信小程序自定义底部弹出框
Nov 16 Javascript
JS+H5 Canvas实现时钟效果
Jul 20 Javascript
js实现带搜索功能的下拉框
Jan 11 Javascript
vue中渲染对象中属性时显示未定义的解决
Jul 31 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
PHP学习笔记之二 php入门知识
2011/01/12 PHP
浅析php fwrite写入txt文件的时候用 \r\n不能换行的问题
2013/08/06 PHP
如何使用微信公众平台开发模式实现多客服
2016/01/06 PHP
PHP实现的DES加密解密实例代码
2016/04/06 PHP
php基于mcrypt_encrypt和mcrypt_decrypt实现字符串加密解密的方法
2016/07/12 PHP
PHP实现根据密码长度显示安全条
2017/07/04 PHP
laravel实现前后台路由分离的方法
2019/10/13 PHP
PHP 图片处理
2020/09/16 PHP
JQuery 绑定事件时传递参数的实现方法
2009/10/13 Javascript
JavaScript Event学习第五章 高级事件注册模型
2010/02/07 Javascript
锋利的jQuery jQuery中的DOM操作
2010/03/21 Javascript
一个判断抢购时间是否到达的简单的js函数
2014/06/23 Javascript
jQuery消息提示框插件Tipso
2015/05/04 Javascript
js实现精美的图片跟随鼠标效果实例
2015/05/16 Javascript
在Node.js中使用HTTP上传文件的方法
2015/06/23 Javascript
JavaScript精炼之构造函数 Constructor及Constructor属性详解
2015/11/05 Javascript
jquery 全选、全不选、反选效果的实现代码【推荐】
2016/05/05 Javascript
jQuery中Nicescroll滚动条插件的用法
2016/11/10 Javascript
Node.js使用Angular简单示例
2018/05/11 Javascript
VUEX 数据持久化,刷新后重新获取的例子
2019/11/12 Javascript
JS实现长图上下滚动效果
2020/03/19 Javascript
[06:50]DSPL次级职业联赛十强晋级之路
2014/11/18 DOTA
跟老齐学Python之关于循环的小伎俩
2014/10/02 Python
python计算时间差的方法
2015/05/20 Python
Python机器学习之决策树算法实例详解
2017/12/06 Python
10个示例带你掌握python中的元组
2020/11/23 Python
如何利用CSS3制作3D效果文字具体实现样式
2013/05/02 HTML / CSS
简历中自我评价分享
2013/10/09 职场文书
读书伴我成长演讲稿
2014/05/07 职场文书
建筑投标担保书
2014/05/20 职场文书
任命书格式
2014/06/05 职场文书
2015秋季运动会通讯稿
2015/07/18 职场文书
纪律委员竞选稿
2015/11/19 职场文书
导游词之潮音寺
2019/09/26 职场文书
关于拾金不昧的感谢信(五篇)
2019/10/18 职场文书
css display table 自适应高度、宽度问题的解决
2021/05/07 HTML / CSS