0

有没有理由这不起作用?

 var xcurrent = parseInt(window.document.getElementById('firstdiv').style.left);
 var ycurrent = parseInt(window.document.getElementById('firstdiv').style.top);

我被告知它不是整数 NaN。

4

4 回答 4

2

u̶̶n̶e̶e̶d̶̶t̶o̶̶r̶e̶m̶o̶v̶e̶̶̶f̶r̶o̶m̶̶t̶h̶e̶̶s̶t̶r̶i̶n̶g̶̶ ̶p̶x̶(在现代浏览器上无关紧要)

确保window.document.getElementById('firstdiv').style.left已定义。如果仅在 CSS 中定义,则无法访问此属性

例子:

只有 JS 定义的样式和内联 CSS 才能被 JS 读取。

于 2012-09-12T23:33:42.557 回答
2

这并不是parseInt说不起作用,NaN这表明您尝试引用的元素不能被解释为整数。虽然很难确定,但请确保您引用的元素确实存在,并在操作它们之前查看您是否可以访问它们。即在尝试对它做更多之前检查它window.document.getElementById('firstdiv')会给你任何东西。

您还需要确保您的 css 确实设置了您尝试检索的属性,否则您将收到undefined/Nan错误。

于 2012-09-12T23:37:03.580 回答
2

如果您尝试获取元素的 x 和 y 位置,则可以使用offsetLeftandoffsetTop代替。

var firstDiv = document.getElementById('firstdiv');
var xcurrent = firstDiv.offsetLeft;
var ycurrent = firstDiv.offsetTop;

这将获得 x 和 y 位置(相对于offsetParent),无论它们是否通过 CSS 定位设置。

于 2012-09-13T00:00:59.913 回答
1

有没有理由这不起作用?

var xcurrent = parseInt(window.document.getElementById('firstdiv').style.left);

不少,但可能的有:

  1. 如果 id 为 'firstdiv' 的元素不存在,window.document.getElementById('firstdiv')将返回null. 尝试访问 的style属性null将引发错误。这不是您指定的结果。

  2. 返回的值.style.left是一个空字符串。在这种情况下,parseIntNaN根据 ECMA-262返回。

更安全的方法是:

var el = document.getElementById('firstdiv');
var xcurrent

if (el) {
  xcurrent = parseInt(el.style.left);

  if (isNaN(xcurrent)) { 
    // there was no value for xcurrent, what now?

正如 Nathan 所说,您可以改用offsetLeft

于 2012-09-13T00:15:52.820 回答