1

我知道我可能做错了什么。谁能指出为什么我会成为对象?

$(document).ready(function(){
    topwithpx='0px';
    alert(topwithpx);
    topstr=topwithpx.substr(0,topwithpx.length-2);
    alert(topstr);
    top=parseInt(topstr);
    alert(top);
});​

http://jsfiddle.net/kjMs9/

谢谢大家:'top' 是保留关键字(Window.top)。我的错。接受第一个答案。+1 快速回答。

4

7 回答 7

9

因为它本质window.top上是Window 对象。改为使用var top以防止将局部变量与全局(=window对象的属性)混合。

事实上,让var你的函数变量成为一个常见的例程 - 以防止将来出现类似的陷阱。)

于 2012-08-23T14:13:25.843 回答
4

您不需要使用substr删除px. parseInt将为您执行此操作:

topwithpx='0px';
var top = parseInt(topwithpx);
alert(top);  //alerts "0"

http://jsfiddle.net/kjMs9/3/

于 2012-08-23T14:14:02.433 回答
3

window.top是 DOM 0 的一部分,不能分配数字。

避免使用全局变量。范围他们var

$(document).ready(function(){
    var topwithpx, topstr, top;
    topwithpx='0px';
    alert(topwithpx);
    topstr=topwithpx.substr(0,topwithpx.length-2);
    alert(topstr);
    top=parseInt(topstr);
    alert(top);
});​
于 2012-08-23T14:13:45.663 回答
3

topwindow对象 ( MDN ) 的默认属性。将您的变量命名为其他名称。

于 2012-08-23T14:13:51.873 回答
2

top是 的只读属性window至少对于 Mozilla来说,但也可能是所有其他大型浏览器)。

只需更改top为其他类似topInt. 此外,用于var声明变量(例如var topInt = parseInt(...)。如果您不使用var,则window默认使用该属性,因此是只读行为。

顺便说一句,使用它会更好一些,console.log而不是alert

于 2012-08-23T14:14:11.397 回答
1

top是一个javascript window属性。您可以通过执行此操作将 top 作为变量

var top = ...
于 2012-08-23T14:15:11.037 回答
1
$(document).ready(function(){
    topwithpx='0px';
    alert(topwithpx);
    topstr=topwithpx.substr(0,topwithpx.length-2);
    alert(topstr);
   var top=parseInt(topstr);
    alert(top);
});

你错过了变量的声明

于 2012-08-23T14:18:14.250 回答