2012-09-01 31 views
1

我正在忙于编写一小段代码,该代码段应允许跨浏览器使用边框框模型。到目前为止基本功能正常工作,但我无法获得保证金的工作。它应该适应可用的空间,但是控制台返回NaN,我不知道它来自哪里。Border-left-width在jQuery中返回NaN

Here是一个小提琴。

console.log甚至没有记录任何东西,我不知道为什么。任何帮助是极大的赞赏。

+0

'parseInt函数($(本)的.css( “左边框宽度”),10)',代码没有达到'console.log'由于之前的字符串相乘。 –

回答

4

在你摆弄的许多地方你有这样的模式:

($(this).css("border-left-width") * 2).replace("px", "") 

你试图执行一个乘法,这导致一个语法错误px抹去。它应该是

($(this).css("border-left-width").replace("px", "") * 2) 

其中通过自动类型转换工作或

(parseInt($(this).css("border-left-width"), 10) * 2) 

哪个解析字符串为整数,除去后px

如果parseInt遇到字符不是 指定基数中的数字,它将忽略它和所有后续字符并且返回整数值解析到那一点。 parseInt将数字截断为 数字为整数值。前后空格是允许的。

Fiddle

parseInt reference

+0

这确实有用,谢谢! –

0

正因为如此:

$(this).css("padding-left") 

$(this).css("border-left-width") 

返回包含 “PX” 的字符串,你尝试用2乘,导致NaN的。您可以通过解析生成的字符串以花车乘,这样才解决了这个问题:

(parseFloat($(this).css("padding-left")) * 2) 

希望这有助于!

+0

从技术上讲,它是导致NaN的字符串中的“px”,parseFloat只是忽略它。 – Neil

+0

是的,它解析所有数字,直到它遇到非数字字符。但它仍然解决了这个问题。 – Logard