Home
JavaEE
Java GUI
Framework
DHtml
Android
插画
教程下载

ATOM 2.0   RSS 2.0
Add to iGoogle Add to Live.com
  • 今天终于收到金山快盘的邀请码
  • 利用最短ie判断在不同浏览器上播放背景音乐
  • 对插画方面的一点感受与回忆
  • 网上看到的两个死里逃生的图片,记录一下
  • 今天开通了糖果社区,附几个激活码
  • 终于可以实现我的多个微博实时同步了
  • 备案和现场拍照就是对站长们的瞎折腾
  • 对Android在互联网应用开发上的纠结
  • 收藏夹中的书签都没了,决定写一个自已的书签管理器
  • 测试自已整理的本机的webapps客户端发送博文能否成功。
  • 今天开通了糖果社区,附几个激活码
  • 终于可以实现我的多个微博实时同步了
  • 备案和现场拍照就是对站长们的瞎折腾
  • 昨天借用飞姐的佳作做的一个浪漫爱情网页
  • 有几个腾讯微博的邀请码(实时更新)
  • BB的网站移到了GAE-JAVA上了
  • 一个基于GAE Python Web.py和JQuery的留言本程序
  • 类许愿墙的一个告白网站和一个电子书网站
  • Android中用Bitmap获取图片中某个区域的图象
  • 对暴力破解带密码的QQ相册的可行性分析
  • 对淘宝web旺旺版一些通讯接口的研究

javascript中style.left和offsetLeft的使用

posted by David Chen at March 7, 2008, 9:19 AM    

如果父div的position定义为relative,子div的position定义为absolute,那么子div的style.left的值是相对于父div的值,
这同offsetLeft是相同的,区别在于:
1. style.left 返回的是字符串,如28px,offsetLeft返回的是数值28,如果需要对取得的值进行计算,
还用offsetLeft比较方便。
2. style.left是读写的,offsetLeft是只读的,所以要改变div的位置,只能修改style.left。
3. style.left的值需要事先定义,否则取到的值为空。而且必须要定义在html里,我做过试验,如果定义在
css里,style.left的值仍然 为空,这就是我刚开始碰到的问题,总是取不到style.left的值。

offsetLeft则仍然能够取到,无需事先定义div的位置。

// 这个函数是对 一个无穷分类的 下拉框的操作,页面开始只有一个下拉框,当选中下拉框一个值后,
动态生成一个select, select的项是子分类,同时要使子分类的select框后移 20px;

    function itemtree_cats_change ( selectObj ) {
      $('itemtree_parentid').value = selectObj.value;
      var level = parseInt( selectObj.level ); // 当前选中的分类的下拉框是第几层
      var left = parseInt( selectObj.offsetLeft ); // 取得左位置值

      var td = $('itemtree_cats'); // 分类容器
      var objs = td.getElementsByTagName( 'SELECT' );
      // 去掉当前选中下拉框的所有子分类的下拉框
      for( var c=0; c<objs.length; c++ ) {
        if( parseInt(objs[c].level) > level )
          td.removeChild( objs[c] );
        }

      // 重新生成一下子下拉框
      var new_select = document.createElement('SELECT');
      new_select.onchange = function() { itemtree_cats_change(this); };
      new_select.level = level + 1;
      new_select.style.position = 'relative';
      new_select.style.left = (left + 20) + 'px';
      // 不能给offsetLeft赋值,是只读的属性
      td.appendChild(new_select);
    

经测试, 上面的代码有错, 因为没有同步处理 td.removeChild后的情况, 在 removeChild 后应该马上 c--;这样才正确
// 资产管理项目的分类显示方法, 本想用dtree来展示的,但老大说要用这种方法,因为表结构是目录树,
但实现的分类是不可能有这么多的.
Labels:   DHtml  
Trackback:   http://cwq.iou1314.com/js-style-left-offsetLeft_a291
微博最近更新
[2010-07-31 16:33]    今天下午又将昨天赢的哎齐出来了,郁闷,一进一出,要有入没出才行啊。
[2010-07-31 07:40]    昨晚又去啊泄度开台,呢次赢左差唔多3旧水,下周星期一请假,回郁南去转社保和入党资料。
本站内的任何文章,只代表个人意见或学习所用,如有版权声明,请尊重作者的劳动成果,在转载时请保留原始链接并注明出处。
Power by David's PhpCms, © 2007 - 2010 CWQ.IOU1314.COM All Rights Reserved.