实际宽度与赋值宽度,工作中遇到一个问题。

Html代码:

 <style>
    table.tblTestAlignment tr td { text-align:right; width:75px;/*赋值宽度,在css中定义td的宽度*/}
    
</style>
<table class="tblTestAlignment" bgColor="red">
    <tbody>
    <tr bgColor="white" class="top">
        <td>US$123</td>
        <td>US$123</td>
        <td>US$123</td>
        <td>US$123</td>
    </tr>
    <tr bgColor="white" class="bottom">
        <td>US$222,333</td>
        <td>US$222,333</td>
        <td>US$222,333</td>
        <td>US$222,333</td>
    </tr>
    </tbody>
</table>

<input type="button" value="Change the  width of the top row" onclick="changeTdWidth(1);" />
<input type="button" value="Change the width of the bottom row" onclick="changeTdWidth(2)"

 

 

 JS 代码(需要引用JQuery):

 function changeTdWidth(type) {
        var width = 0;
        if (type == 1) {
            width = $("table.tblTestAlignment tr.top td").eq(0).width();
            width += 50;
            $("table.tblTestAlignment tr.top td").css("width", width+'px');
        }
        else {
            width = $("table.tblTestAlignment tr.bottom td").eq(0).width();
            $("table.tblTestAlignment tr.bottom td").each(
                function() {
                    width += 100;
                    $(this).css("width", width + 'px');
                }
            )
        }
    
    }

   上面的代码运行在IE中的效果如下图:

  

  可以很清楚的看到,红色table里面的td的内容,都是居右对齐的

  现在我们在document加载完成的时候执行 changeTdWidth(2) ,代码如下:

   $(document).ready(function() {
        changeTdWidth(2);
    });

   再次刷新页面

   得到效果如下图:

   

   当我们改变第二行的td的宽度的时候, table中第一行的数据没有居右对齐!问题出在哪呢?

   实际上同样的代码运行在FF中不会有任何问题。这个问题(只)在IE中出现。

   我们对比两个结果图,可以发现,第一行的数据的td内容+左边空出的部分正好是第一幅图中td的宽度(75px); 尽管它的实际宽度已经随着第二行的值一同改变了。而居右对齐显然是以赋值的宽度作为标竿了。

 现在只要把css样式表中定义的 width:75px; 删除掉,再次刷新页面,结果就正常了。或者在改变赋值第二行td的宽度的时候,同时将第一行的td的宽度设置成相对应的同样的值,问题也就解决。

 

 

 

posted @ 2010-05-17 17:04  wind hong  阅读(1667)  评论(0编辑  收藏  举报