parseInt不适用于window.document

时间:2012-09-12 23:30:29

标签: javascript

有没有理由不这样做?

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

我被告知它不是NaN的整数。

4 个答案:

答案 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位置,则可以使用offsetLeftoffsetTop代替。

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);

相当多,但可能的是:

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

  2. .style.left返回的值为空字符串。在这种情况下,parseInt会根据ECMA-262返回NaN

  3. 更安全的方法是:

    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