IE javascript设置style.left无法正常工作

时间:2011-05-09 15:07:48

标签: javascript cross-browser

嘿,
我正在努力将样式属性设置为通过javascript创建的div。 流程是:

  1. 脚本加载
  2. 创建<div id="test">
  3. 设置属性style="top: 20px; left: 10px; margin: 0px; position: absolute;"
  4. 一切都适用于所有其他浏览器但是当涉及IE时,事情就是行不通。 如何在IE中设置这些样式属性?到目前为止,这段代码:

    var div = document.getElementById('test');
    div.style.left     = "10px";
    div.style.top      = "20px";
    div.style.margin   = "0px";
    div.style.position = "absolute !important";
    

    我能够设置顶部,边距和位置。 Style.left是不可能的。

    在所有浏览器中处理样式属性时,最好的方法是什么?

    @IE不工作版本:7,8。 (没有在6和9下尝试过)

5 个答案:

答案 0 :(得分:5)

经过几个小时调试代码后,我终于成功了。 问题是我有一个返回数字的变量。该变量是一些计算的基础,它在设置div.style.left时使用。因此变量有时会返回导致疼痛的NaN。 :) 感谢大家所付出的努力和时间! :)

答案 1 :(得分:2)

  

交易时最好的方法是什么   在所有浏览器中使用样式属性?

只设置div.className并将所有CSS移动到CSS文件。

答案 2 :(得分:2)

function MuoveOnClickPosition(YourDIVObject) {

//numeric variables.
tempX = event.clientX;
tempY = event.clientY;

// String variables
var X, Y ;
X = tempX + 'px'; 
Y = tempY + 'px'; 

document.getElementById(YourDIVObject).style.left = X;
document.getElementById(YourDIVObject).style.top = Y;
}

//应该工作!有时IE需要字符串格式的'XXXpx'。它取决于DOC类型。

答案 3 :(得分:1)

!重要的是杀死绝对的位置。甚至不适用于Firefox。在JSBIN

上测试过

答案 4 :(得分:1)

div.style.cssText="top: 20px; left: 10px; margin: 0px; position: absolute;"

请记住div'es位置是相对于其父级的 - 一些旧的IE需要将父元素位置设置为相对或绝对,具体取决于doctype。