javascript - 为什么 element.style.left 返回 NaN?

标签 javascript internet-explorer dom internet-explorer-7

我在 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/

相关文章:

javascript - A 型框架 : mouseenter/mouseleave for parent entity only

javascript - Materializecss scrollspy throttle 不工作

html - 如何在 IE 中将 flex 元素居中

javascript - Xpath ID 在每次引导时动态创建,因此不会轻易成为目标

javascript - 如何同时声明很多document.getElementById变量

javascript - 如何向一个按钮添加两个不同的事件监听器

javascript - Vue 组件渲染期间多次调用的函数

css - IE8 不在视口(viewport)下方显示渐变

java - 使用Selenium WebDriver java在用户名和密码文本框之间切换并输入相应的值

javascript - 使用 Async Done 和 jasmine-given 的示例