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

发布时间 - 2026-01-10 23:09:07    点击率:

一、问题总结:

    样式必须直接写在元素内部才能通过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获取值的解决方法,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言。


# div.style.left  # java 线程同步详细介绍及实例代码  # java中@ModelAttribute注解的作用  # 【Java】BigDecimal实现加减乘除运算代码  # JavaScript实现的鼠标响应颜色渐变效果完整实例  # Java 图片与byte数组互相转换实例  # Java使用SFTP上传文件到服务器的简单使用  # 详解租约机制以及在hbase中的应用  # 的是  # 相对于  # 设置为  # 都是  # 是一个  # 是个  # 都有  # 模式下  # 给大家  # 才有  # 如果没有  # 才行  # 转化为  # 写在  # 解决方法  # 很方便  # 所述  # 小编  # 给我留言  # 很有用 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: javascript中对象的定义、使用以及对象和原型链操作小结  太平洋网站制作公司,网络用语太平洋是什么意思?  Laravel怎么实现软删除SoftDeletes_Laravel模型回收站功能与数据恢复【步骤】  Laravel如何处理CORS跨域问题_Laravel项目CORS配置与解决方案  清除minerd进程的简单方法  uc浏览器二维码扫描入口_uc浏览器扫码功能使用地址  Win11搜索栏无法输入_解决Win11开始菜单搜索没反应问题【技巧】  微信小程序 闭包写法详细介绍  如何挑选高效建站主机与优质域名?  如何利用DOS批处理实现定时关机操作详解  Laravel API路由如何设计_Laravel构建RESTful API的路由最佳实践  Laravel怎么生成二维码图片_Laravel集成Simple-QrCode扩展包与参数设置【实战】  javascript中闭包概念与用法深入理解  详解vue.js组件化开发实践  如何快速搭建高效可靠的建站解决方案?  美食网站链接制作教程视频,哪个教做美食的网站比较专业点?  Linux系统命令中screen命令详解  JavaScript如何实现路由_前端路由原理是什么  如何快速上传建站程序避免常见错误?  香港服务器租用每月最低只需15元?  Laravel如何使用Socialite实现第三方登录?(微信/GitHub示例)  Laravel怎么防止CSRF攻击_Laravel CSRF保护中间件原理与实践  Laravel如何使用Vite进行前端资源打包?(配置示例)  laravel怎么在请求结束后执行任务(Terminable Middleware)_laravel Terminable Middleware请求结束任务执行方法  香港服务器网站推广:SEO优化与外贸独立站搭建策略  电视网站制作tvbox接口,云海电视怎样自定义添加电视源?  装修招标网站设计制作流程,装修招标流程?  Zeus浏览器网页版官网入口 宙斯浏览器官网在线通道  用v-html解决Vue.js渲染中html标签不被解析的问题  jquery插件bootstrapValidator表单验证详解  深圳防火门网站制作公司,深圳中天明防火门怎么编码?  如何快速查询域名建站关键信息?  如何制作新型网站程序文件,新型止水鱼鳞网要拆除吗?  手机网站制作与建设方案,手机网站如何建设?  如何快速查询网站的真实建站时间?  HTML 中动态设置元素 name 属性的正确语法详解  UC浏览器如何切换小说阅读源_UC浏览器阅读源切换【方法】  ,南京靠谱的征婚网站?  python中快速进行多个字符替换的方法小结  laravel怎么通过契约(Contracts)编程_laravel契约(Contracts)编程方法  Laravel如何优化应用性能?(缓存和优化命令)  Laravel如何实现API资源集合?(Resource Collection教程)  Laravel Session怎么存储_Laravel Session驱动配置详解  js实现点击每个li节点,都弹出其文本值及修改  Laravel如何实现多级无限分类_Laravel递归模型关联与树状数据输出【方法】  公司门户网站制作公司有哪些,怎样使用wordpress制作一个企业网站?  如何挑选最适合建站的高性能VPS主机?  ChatGPT常用指令模板大全 新手快速上手的万能Prompt合集  如何在自有机房高效搭建专业网站?  如何用腾讯建站主机快速创建免费网站?