有没有理由不这样做?
var xcurrent = parseInt(window.document.getElementById('firstdiv').style.left);
var ycurrent = parseInt(window.document.getElementById('firstdiv').style.top);
我被告知它不是NaN的整数。
答案 0 :(得分:2)
u̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶p̶x̶
̶̶f̶r̶o̶m̶̶t
确保window.document.getElementById('firstdiv').style.left
已定义。如果只在CSS
示例:
只有JS和内联CSS定义的样式才能被JS读取。
答案 1 :(得分:2)
parseInt
不起作用,NaN
表示您尝试引用的元素不能解释为整数。虽然很难确定,但请确保您引用的元素确实存在,并在操作它们之前查看是否可以访问它们。即检查window.document.getElementById('firstdiv')
在尝试使用它之前给你任何东西。
您还需要确保您的css实际设置了您要检索的属性,否则您将收到undefined
/ Nan
错误。
答案 2 :(得分:2)
如果您尝试获取元素的x和y位置,则可以使用offsetLeft
和offsetTop
代替。
var firstDiv = document.getElementById('firstdiv');
var xcurrent = firstDiv.offsetLeft;
var ycurrent = firstDiv.offsetTop;
这将获得x和y位置(相对于offsetParent
)是否通过CSS定位设置。
答案 3 :(得分:1)
有没有理由不这样做?
var xcurrent = parseInt(window.document.getElementById('firstdiv')。style.left);
相当多,但可能的是:
如果ID为'firstdiv'的元素不存在,window.document.getElementById('firstdiv')
将返回null
。尝试访问null
的 style 属性将引发错误。这不是你指定的结果。
.style.left
返回的值为空字符串。在这种情况下,parseInt会根据ECMA-262返回NaN
。
更安全的方法是:
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?
正如内森所说,你可以改用offsetLeft。