直接运行是正确的,可是在IE8 跟firefox下有一个BUG,IE下LEFT 是去不掉的,firefox可以的。以下是我的代码:
HTML code
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD><TITLE>样式获取!</TITLE>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
    <title>jQuery</title>
    <head>
    <script type="text/javascript" src="js/jquery.js"></script>    
<SCRIPT LANGUAGE="JavaScript">
<!--
$(document).ready(function(){
    var str = $("#hello").attr("style");
    alert(str);
    var reg = /\s/g
    str = str.replace(reg,"");
    reg = /(left|POSITION|TOP|LEFT).*?;/ig
    str = str.replace(reg,"");
    if (str.substring(str.length-1)==";") str = str.substring(0,str.length-1);
    str = "{\"" + str + "\"}";
    reg = /;/g
    str = str.replace(reg,"\",\"");
    reg = /:/g
    str = str.replace(reg,"\":\"");
    alert(str);
        })
</SCRIPT>
</HEAD>
<body>
<div id="hello" style="WIDTH:40px; POSITION: absolute; top: 69px; HEIGHT:40px;LEFT: 316px;"></div>
</body>
</HTML>
原帖地址:http://topic.csdn.net/u/20100412/10/9a13a6dd-52ba-43e0-902e-95802795fb93.html
请大家再帮忙看看~~~ 谢谢

解决方案 »

  1.   

    firefox
    width: 40px; position: absolute; top: 69px; height: 40px; left: 316px;IE
    WIDTH: 40px; POSITION: absolute; TOP: 69px; HEIGHT: 40px; LEFT: 316px没听说正则表达式是有不兼容的····关键的地方是两者获取的str不一样。
      

  2.   

    做一个简单的处理,没有分号就补上
    $(document).ready(function(){
    var str = $("#hello").attr("style");
    if (!/;\s*$/.test(str)) str += ';';
    // 。。
    });
      

  3.   

     reg = /(left|POSITION|TOP|LEFT).*?;/ig
    改成
     reg = /(left|POSITION|TOP|LEFT).*?(;|$)/ig