在运行此代码的JavaScript中:
parent.css("top") + parent.height() * 2
Chrome控制台的结果是:
100px320
为什么会发生这种情况?
parent.height()
等于160,所以似乎parent.css("top")
是一个字符串,JS只是在字符串中添加一些字符而不是进行数学计算。
为什么它不起作用,我该如何正确地做到这一点?
答案 0 :(得分:2)
您需要将字符串更改为数字 - 您可以使用parseInt
执行此操作:
parseInt(parent.css("top"),10) + parent.height() * 2
答案 1 :(得分:1)
+
运算符在Javascript中“重载”。
真正发生的事情是Javascript中没有输入,因此+
运算符正在尝试强制您的值为+
- 能够。
你是对的.css("top")
是一个字符串:.css
方法将完全返回CSS中的内容,你最好在CSS中使用单位声明。
当Javascript在两个不同类型的变量之间遇到+
时,它会尽力而为,并将整数强制转换为字符串,这样就不会失去任何精度。
你可以做这样的事情来解决它:
parseInt( parent.css( "top" ) ) - - parent.height() * 2;
这有两个问题:
parseInt取第一个整数看到并返回。 100px
将返回100
,但也会返回100,400 。小心。
- -
会强制Javascript进行算术运算,因为你要求它从负数中减去一个数字,这与加法相同。但是,-
运算符没有歧义,因此它将工作或生成NaN
。