我在 Internet Explorer 7 中遇到了一个奇怪的错误,当我在浮点上调用 Math.round 时,它给出了“无效参数”错误。考虑以下因素:
var elementLeft = parseInt(element.style.left); // Here we're actually getting NaN
function Foo(x) {
this.x = x;
this.apply = function(element) {
element.style.left = Math.round(this.x) + 'px';
};
}
Foo(elementLeft);
在本例中,x
是一个非负数,element
只是我页面中的一个 DOM 元素(实际上是一个 div)。
有什么想法吗?
编辑:作为x
参数传入的变量实际上之前已初始化为parseInt(element.style.left)
。看来我第一次尝试读取 element.style.left
时,IE 实际上返回了 NaN。我已经更新了代码以反射(reflect)这一点。有人知道这个问题的解决方法吗?
最佳答案
It appears that the first time I try to read element.style.left, IE is actually giving back NaN.
第一次阅读element.style.left
时,元素上实际上是否设置了left
样式?请记住 element.style
仅反射(reflect)内联 style="..."
属性中设置的样式属性,而不反射(reflect)样式表应用的样式属性。
如果您尚未设置内联样式,style.left
将为您提供 undefined
对象,该对象确实将 parseInt
转换为 NaN .
关于javascript - 为什么 element.style.left 返回 NaN?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1428268/