有没有理由这不起作用?
var xcurrent = parseInt(window.document.getElementById('firstdiv').style.left);
var ycurrent = parseInt(window.document.getElementById('firstdiv').style.top);
我被告知它不是整数 NaN。
有没有理由这不起作用?
var xcurrent = parseInt(window.document.getElementById('firstdiv').style.left);
var ycurrent = parseInt(window.document.getElementById('firstdiv').style.top);
我被告知它不是整数 NaN。
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 读取。
这并不是parseInt
说不起作用,NaN
这表明您尝试引用的元素不能被解释为整数。虽然很难确定,但请确保您引用的元素确实存在,并在操作它们之前查看您是否可以访问它们。即在尝试对它做更多之前检查它window.document.getElementById('firstdiv')
会给你任何东西。
您还需要确保您的 css 确实设置了您尝试检索的属性,否则您将收到undefined
/Nan
错误。
如果您尝试获取元素的 x 和 y 位置,则可以使用offsetLeft
andoffsetTop
代替。
var firstDiv = document.getElementById('firstdiv');
var xcurrent = firstDiv.offsetLeft;
var ycurrent = firstDiv.offsetTop;
这将获得 x 和 y 位置(相对于offsetParent
),无论它们是否通过 CSS 定位设置。
有没有理由这不起作用?
var xcurrent = parseInt(window.document.getElementById('firstdiv').style.left);
不少,但可能的有:
如果 id 为 'firstdiv' 的元素不存在,window.document.getElementById('firstdiv')
将返回null
. 尝试访问 的style属性null
将引发错误。这不是您指定的结果。
返回的值.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。