当前位置:首页 > 日记 > 正文

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

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

一、问题总结:

    样式必须直接写在元素内部才能通过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>

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

 四、总结:

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

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

相关文章

受损的dll文件如何修复

受损的dll文件如何修复

文件,受损,电脑软件,dll,电脑使用时间长了,经常会遇到这样一种问题,在你打开某个程序,会弹出一个提示窗口,提示程序中某个dll文件丢失或损坏,无法正常运行。其实这时候我们可以试着去网上下载相同的dll文件,说不定可以解决了,下面是给大家推荐一个…

JS获取数组中出现次数最多及第二多

JS获取数组中出现次数最多及第二多

方法,组中,次数最多,电脑软件,JS,本文实例讲述了JS获取数组中出现次数最多及第二多元素的方法。分享给大家供大家参考,具体如下:整型数组中出现次数最多和第二多的元素用哈希数组function f(arr){ var i; var length=arr.length; var hash…

Excel表格中怎么运用函数求差

Excel表格中怎么运用函数求差

函数,表格,电脑软件,Excel,  在用Excel求差的时候,也是可以使用求和函数的,只需要对函数的参数稍作修改即可。以下是小编为您带来的关于Excel函数求差,希望对您有所帮助。Excel函数求差方法一:使用公式1、选中C2单元格,输入&ldquo;=A2-B2&rdqu…

正则表达式全局匹配模式 | g修饰符

正则表达式全局匹配模式 | g修饰符

匹配模式,修饰符,正则表达式,全局,电脑软件,正则表达式g修饰符:g修饰符用语规定正则表达式执行全局匹配,也就是在找到第一个匹配之后仍然会继续查找。语法结构:构造函数方式:new RegExp("regexp","g")对象直接量方式:/regexp/g浏览器支…

ps怎么设计由文字组成的立方体效果

ps怎么设计由文字组成的立方体效果

文字,立方体,效果图,电脑软件,ps,今天我们就来看看ps制作由文字组成的正方体的教程,主要使用智能对象完成。软件名称:Adobe Photoshop 8.0 中文完整绿色破解版软件大小:150.1MB更新时间:2015-11-041、先用矩形工具画出3个一样大的矩形。2、在图…

Win7/8修改本地连接DNS详解图文教

Win7/8修改本地连接DNS详解图文教

本地连接,图文教程,修改,详解,电脑软件,电脑DNS怎么改? 之前我们发表过适于XP的DNS设置教程,由于时间比较早,加上写不太详细,许多用户不知道如何操作,今天为大家提供了Win7/8设置DNS的图文详解教程首先,通过开始菜单中打开控制面板,然后选择&rdqu…

PS怎么在绿萝花瓶中合成一条小金鱼

PS怎么在绿萝花瓶中合成一条小金鱼

花瓶,绿萝,电脑软件,PS,大家都知道用PS可以制作出很多很多出乎意料的图片,但是得有创意和技术,小编这里谈不上技术,但是可以告诉大家最基本的操作方法。软件名称:Adobe Photoshop 8.0 中文完整绿色破解版软件大小:150.1MB更新时间:2015-11-041、…

访问网站出现403错误集锦

访问网站出现403错误集锦

错误集锦,网站,电脑软件,如果你是访问一个网页出现这个问题 说明这个网页是一般人是关闭的 禁止访问的 你就不要看了错误代码:403.1403.1错误是由于"执行"访问被禁止而造成的,若试图从目录中执行 CGI、ISAPI 或其他可执行程序,但该目录不允…

Excel如何关闭受保护视图或取消启

Excel如何关闭受保护视图或取消启

启用,视图,取消,编辑,电脑软件,前段时间公司所有客户端电脑全部进行升级,Office也由用了近10年的2003升级的2010。因为同事们一直都在用Office 2003,所以升级带来的后遗症就是同事们各种不适应界面和各种找不到按钮、菜单,对于这些,只能强行要…

PS怎么快速设计牛奶字体效果?

PS怎么快速设计牛奶字体效果?

字体,牛奶,效果,快速,电脑软件,牛奶字的简单做法:通过给文字加上简单的浮雕的效果,再通过一些随机的黑色实心圆,模拟奶牛身上的黑色花纹,二者相结合,只需要几步就可以打造出可爱的牛奶字效果,快来试一试吧。软件名称:Photoshop CS 简体中文免安装…

PHP使用Redis实现防止大并发下二次

PHP使用Redis实现防止大并发下二次

方法,并发,电脑软件,PHP,Redis,本文实例讲述了PHP使用Redis实现防止大并发下二次写入的方法。分享给大家供大家参考,具体如下:PHP调用redis进行读写操作,大并发下会出现:读取key1,没有内容则写入内容,但是大并发下会出现同时多个php进程写入的情…

PS怎么设置画布大小?ps画布大小设

PS怎么设置画布大小?ps画布大小设

设置,方法,大小,电脑软件,PS,有人在使用PS时,可能图像太小不够用,或者是像素不够太低等等之类,其实还是有一个方法改变这一现象的,下面介绍的便是这种方法的过程,希望大家能够喜欢!步骤:1、先打开PS,然后看见上方有一个文件 2、打开文件之后,点击新…